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

Nginx+uWSGI部署Flask服务本地正常远程无法访问问题咨询

故障原因分析

1. 域名访问无响应、无日志的可能原因

  • 远程服务器安全组/防火墙未放行80、443端口:公网请求根本没到达服务器,自然不会产生Nginx日志
  • DNS解析未生效:虽然配置了A记录,但本地DNS缓存或者解析链路还没同步,请求打到了错误IP上
  • Nginx容器未映射443端口:原启动命令只配置了-p 80:80端口映射,新增SSL监听443端口后没有补充-p 443:443配置,HTTPS请求直接被服务器拒绝,80端口如果被防火墙拦截也会出现无响应问题

2. 公网IP访问返回502的可能原因

  • 请求未匹配到配置的Nginx规则:用公网IP访问时Host字段为IP,无法匹配server_name develop.domainname.com的规则,会走Nginx默认server配置,如果默认server配置了HTTP转发到8080端口,而8080端口监听的是uwsgi协议,就会返回502
  • 远程环境Docker网络异常:两个容器未实际加入同一个自定义网络,或是Flask容器未正常启动、端口监听异常,Nginx无法将请求转发到1.1.1.4:8080
  • Nginx配置缺失upstream块:远程配置仅修改了server块,没有保留原来的upstream app_dev配置,导致uwsgi_pass找不到目标转发地址
排查定位步骤
  • 第一步:验证端口连通性
    本地执行telnet 服务器公网IP 80和telnet 服务器公网IP 443,如果连接失败,先检查服务器安全组、iptables/firewalld是否放行80、443端口,再确认Nginx启动命令已经添加-p 443:443端口映射
  • 第二步:验证DNS解析
    本地执行nslookup develop.domainname.com,确认返回的IP和服务器公网IP一致,不一致则等待DNS生效或者清理本地DNS缓存
  • 第三步:验证Nginx配置有效性
    进入Nginx容器执行nginx -t,检查配置是否存在语法错误,同时确认配置文件里保留了upstream app_dev的完整配置
  • 第四步:验证容器网络连通性
    进入Nginx容器执行ping 1.1.1.4和nc -zv 1.1.1.4 8080,确认可以正常连通Flask容器的8080端口,不通则检查Flask容器是否正常运行、Docker网络配置是否正确
  • 第五步:验证请求匹配规则
    在服务器本地执行curl -H "Host: develop.domainname.com" http://127.0.0.1和curl -H "Host: develop.domainname.com" https://127.0.0.1 -k,查看Nginx是否有日志输出,如果有日志且返回正常,说明问题出在公网链路;如果本地请求也返回502,查看Nginx错误日志定位转发问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 17:57:04