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

Docker Compose下Nginx反向代理无法转发请求至后端问题排查

Nginx代理后端服务失败的修复方案

问题现象

  • 访问http://localhost/时显示Nginx默认欢迎页面,无法转发到后端服务
  • 直接访问http://localhost:3000/可获取后端正确响应:{"message":"Service Running Ok","status":true,"statusCode":200,"data":[]}

问题根源

从终端日志可见,后端服务实际在容器内部监听5500端口(日志输出:App is up and running on Configured port 5500),但Nginx配置的upstream指向了backend:3000,端口不匹配导致代理连接失败。

docker-compose中backend服务的端口映射3000:${PORT}是将宿主机3000端口转发到容器内部的${PORT}(对应.env.production中的5500),所以外部直接访问3000能正常连接后端,但Nginx在容器网络内需要直接访问后端容器的内部端口5500。

修复步骤

1. 修改Nginx配置文件

编辑nginx.conf,将upstream块中的端口从3000改为5500:

events {

}

http {
    include /etc/nginx/conf.d/*.conf;

    upstream api_server {
        server backend:5500;  # 修改为后端容器内部的5500端口
    }

    server {
        listen 80;

        location / {
            proxy_pass http://api_server;
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        }
    }
}

2. 重启Nginx容器

执行命令重启Nginx使配置生效:

docker-compose restart nginx

若重启后仍有问题,可重新启动整个服务栈:

docker-compose down && docker-compose up -d --build

验证

修改完成后,访问http://localhost/应能获取到与http://localhost:3000/一致的后端响应。

内容的提问来源于stack exchange,提问作者Ukpa Uchechi

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.14 10:09:55