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

NGINX+USWGI部署Django应用出现502 Bad Gateway错误排查求助

问题根本原因

  • Nginx容器和Django(web)容器属于两个独立的网络命名空间,my_nginx.conf中配置的上游地址127.0.0.1:8888指向的是Nginx容器自身的本地回环地址,而非web容器的地址,所以无法建立连接。
  • uWSGI配置中socket绑定的是127.0.0.1:8888,仅允许web容器内部的进程访问,外部容器无法连接到该端口。

修复步骤

1. 修改uWSGI配置(uwsgi.ini)

将socket绑定地址从127.0.0.1:8888改为0.0.0.0:8888,允许其他容器访问web容器的uWSGI端口:

[uwsgi]
wsgi-file = /app/blindspot/wsgi.py 
socket = 0.0.0.0:8888
master=true
processes = 4
threads = 2
module = blindspot.wsgi:application 
vacuum=true

2. 修改Nginx上游配置(my_nginx.conf)

Docker Compose会自动为服务创建内部DNS解析,直接用web服务的名称web作为上游地址即可,端口保持8888:

upstream blindspot {
     server web:8888;
    #server unix:/app/app.sock; # for a file socket
}

3. 重启容器生效

执行以下命令重建容器:

docker-compose down
docker-compose up --build

可选优化方案

如果不想用端口通信,也可以用unix套接字实现更高效的通信,操作如下:

  • 在uwsgi.ini中把socket配置改为unix:/app/app.sock,同时添加chmod-socket = 666配置保证Nginx有权限访问套接字文件
  • 在my_nginx.conf中启用unix套接字的上游配置即可
  • 注意两个容器要共享挂载/app目录或者专门的套接字存储卷,保证双方都能访问到套接字文件

内容的提问来源于stack exchange,提问作者Michael McDermott

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 06:15:08