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

Docker环境下Nginx反向代理请求后端被拒绝问题排查

Docker Nginx代理后端连接拒绝问题解决方案

这个问题我之前也碰到过,核心是没搞清楚Docker容器间通信的端口逻辑,咱们一步步拆解:

问题根源

看你的错误日志:connect() failed (111: Connection refused) while connecting to upstream, client: 172.20.0.1, server: localhost, request: "GET /backend HTTP/1.1", upstream: "http://172.20.0.2:3001/"

这里Nginx试图连接后端容器的3001端口,但后端容器根本没在这个端口上监听——在你的docker-compose.yml里,backend_service_1是把容器内部的5000端口映射到宿主机的3001,容器间通信是直接走容器内部端口,不是宿主机的映射端口。

修复步骤

1. 修正Nginx的upstream配置

把nginx.conf里的upstream部分改成下面这样,用后端容器的内部端口5000:

upstream backend {
    server backend_service_1:5000;
}

2. 额外验证点(可选但推荐)

  • 进入后端容器,确认服务确实在5000端口监听:
    docker exec -it <backend_container_id> netstat -tulpn | grep 5000
    
  • 检查容器是否都在同一个网络:
    docker network inspect my-network
    
    确保backend_service_1和frontend(Nginx容器)都在这个网络的容器列表里。

改完配置后重启Nginx容器,再访问localhost:3000/backend应该就能正常代理到后端服务了。

内容的提问来源于stack exchange,提问作者Dinosaur-Guy

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 07:55:38