You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Docker Nginx proxy_pass仅前端路由报502 Bad Gateway问题

故障原因

核心问题是混淆了Docker端口映射的作用范围:

  • docker-compose中配置的ports字段,仅用于把容器内部端口映射到宿主机的端口,供宿主机或外部网络访问使用;
  • 同一docker-compose默认网络内的容器之间互相通信时,直接访问对方容器内部实际监听的端口,完全不经过宿主机的端口映射规则。

对应到你的配置,故障逻辑非常明确:

  1. 前端服务frontend容器内部的Nginx实际监听的是80端口,配置里4200:80的映射仅对宿主机生效,容器内部没有任何进程监听4200端口。
  2. 网关apigw的Nginx配置中,把前端请求转发到了http://frontend:4200,相当于去连接前端容器不存在的4200端口,自然触发连接拒绝错误。
  3. 后端接口能正常访问纯属巧合:后端服务内部监听3000端口,端口映射也配置为3000:3000,网关配置里写的3000端口刚好和容器内部监听端口一致,所以转发逻辑没有报错。
修复步骤
  1. 修改反向代理(reverseproxy)镜像内的nginx.conf配置,把前端路径的代理目标端口从4200改为前端容器实际监听的80端口,修正后的location配置如下:
location / {
    proxy_pass         http://frontend:80;
    proxy_set_header   X-Forwarded-For $remote_addr;
    # 补充常规反向代理请求头,避免前端静态资源、路由跳转时出现host/协议匹配异常
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-Proto $scheme;
}

注:原配置中前端服务的4200:80端口映射可以保留,不影响容器间通信,仅用于需要从宿主机直接通过4200端口访问前端服务的场景。

  1. 重新构建reverseproxy镜像,重启apigw容器即可正常访问前端页面。

内容的提问来源于stack exchange,提问作者Iñigo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.01 19:24:31