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

同一80端口通过Nginx部署多个Flask API返回502错误问题咨询

502错误原因排查与解决方案

错误根因

从Nginx日志的connect() failed (111: Connection refused)报错可以判定,Nginx无法和streaming服务的8081端口建立uwsgi连接,核心原因有以下几点:

  1. uWSGI配置拼写错误,导致streaming服务的uwsgi进程启动失败,8081端口未正常监听
  2. Docker网络配置异常,Nginx容器和streaming容器不在同一网络下,或streaming容器未暴露8081端口到容器网络
  3. 路径匹配规则错误,该问题会在连接问题解决后出现,表现为404而非502,属于后续潜在问题

对应解决方法

1. 修复streaming服务的uwsgi.ini配置

你当前的uwsgi.ini存在两处拼写错误,会直接导致uwsgi启动失败:

# 错误写法
chomod-socket = 660
vaccum = true

# 正确写法
chmod-socket = 660
vacuum = true

修改完成后重启streaming容器,进入容器执行netstat -tunlp | grep 8081验证端口是否正常监听,执行ps aux | grep uwsgi验证uwsgi进程是否正常启动。

2. 验证Docker网络连通性

  • 执行docker inspect nginx和docker inspect streaming,确认两个容器属于同一个Docker网络
  • 进入Nginx容器,执行telnet streaming 8081验证端口连通性,如果连接失败,检查streaming容器的Dockerfile是否配置EXPOSE 8081,docker-compose配置是否将streaming服务和Nginx服务加入同一网络

3. 修复Nginx路径重写规则

连接问题解决后,你会遇到路径不匹配问题:当前配置会把/devapp/前缀一起转发到streaming服务,而你的Flask接口路径是/api/v1/home/list,多出来的/devapp/前缀会导致404报错,修改Nginx的location配置如下:

location /devapp/ {
    include uwsgi_params;
    rewrite ^/devapp/(.*)$ /$1 break;
    uwsgi_pass streaming:8081;
}

修改完成后重启Nginx容器即可。

4. 本地验证Flask接口可用性

进入streaming容器,执行curl 127.0.0.1:8081/api/v1/home/list,验证接口本身是否可以正常返回结果,排除Flask代码错误。

内容的提问来源于stack exchange,提问作者Chinthaka Devinda

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 09:06:04