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

Docker环境下用Nginx代理Node.js API出现502 Bad Gateway问题求助

问题排查与修复步骤

1. 修复Nginx反向代理地址错误

Docker Compose 会为所有服务自动创建独立的内部网络,同一个网络下的容器通过服务名互相通信,而非 localhost。你当前Nginx配置里的proxy_pass http://localhost:3000 指向的是Nginx容器自身的3000端口,而非Node服务的端口,这是502错误的核心原因。

修改default.conf中对应server块的配置:

server {
    listen 80;
    server_name api.mydomain.com;

    location / {
        proxy_pass http://node:3000;
        # 建议补充以下代理头,避免Node服务获取请求信息异常
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }
}

2. 修复Node服务可访问性配置

  • 检查你的Node.js代码的监听配置,必须监听0.0.0.0而非127.0.0.1,否则容器外的请求无法访问:
    示例正确写法:
    app.listen(3000, '0.0.0.0', () => {
      console.log('服务启动在0.0.0.0:3000');
    });
    
  • 补充docker-compose.yml中Nginx服务的依赖配置,确保Node服务先启动:
    services:
     nginx:
      build:
       context: .
       dockerfile: nginx.dockerfile
      ports:
       - 80:80
      volumes:
       - ./src:/var/www/html
      depends_on:
       - php
       - node # 新增Node服务依赖
    # 无需给Node服务映射宿主端口,只要Nginx能通过内部网络访问即可
    

3. 生效配置

修改完成后执行以下命令重启服务即可:

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

补充排查

如果修改后仍有问题,执行docker-compose logs node查看Node服务日志,确认服务正常启动且没有运行报错。


内容的提问来源于stack exchange,提问作者Mário Santos

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 22:06:03