直接使用docker中的nginx
排查步骤(关键)
1️⃣ 确认后端服务是否在容器内可通过 localhost:8080 访问?
⚠️ 这是最常见的问题:
在容器内,localhost:8080 指的是 容器自己,而不是宿主机上的服务。
如果你的后端服务(Spring Boot 等)运行在 宿主机 或 另一个容器 上,那么:
proxy_pass http://localhost:8080/;→ 会尝试访问 当前 Nginx 容器内部的 8080 端口- 但 Nginx 容器里并没有后端服务 → 404 或 502
✅ 正确做法:让 Nginx 容器能访问后端服务
✅ 情况一:后端服务在宿主机上
你需要让容器访问宿主机:
- 在 Linux 上,使用
host.docker.internal(或--network=host) - 修改
proxy_pass:
Nginx
编辑
location /charsming-api/ {proxy_set_header Host $http_host;proxy_set_header X-Real-IP $remote_addr;proxy_set_header REMOTE-HOST $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;proxy_pass http://host.docker.internal:8080/; # 改这里!