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

部署在VPS的Flask-Gunicorn-Docker应用无法通过公网IPv4访问

解决Flask+Gunicorn部署后公网无法访问的问题

以下是按优先级排序的排查和解决步骤:

  • 检查VPS服务商安全组规则
    绝大多数云服务商(如阿里云、腾讯云、AWS等)都有独立于系统防火墙的安全组配置,这是最常见的访问失败原因。登录VPS控制台,找到安全组的入站规则,确保已添加允许0.0.0.0/0访问目标端口(比如80)的规则,协议选择TCP。

  • 验证系统防火墙状态
    执行对应系统的命令检查端口是否开放:

    • Ubuntu/Debian系统:ufw status,查看输出中是否包含80/tcp的允许规则;如果没有,执行ufw allow 80/tcp开放端口。
    • CentOS/RHEL系统:firewall-cmd --list-ports,确认80端口在列表中;如果没有,执行firewall-cmd --add-port=80/tcp --permanent && firewall-cmd --reload生效规则。
  • 确认端口实际监听情况
    日志显示监听0.0.0.0:80但可能存在实际监听异常,执行ss -tulpn | grep 80(或netstat -tulpn | grep 80),检查输出:

    • 必须存在gunicorn进程,且监听地址为0.0.0.0:80,而非127.0.0.1:80(后者仅允许本地访问)。
    • 如果监听地址错误,检查Gunicorn启动命令的--bind=0.0.0.0:80参数,确保无拼写错误(比如误写为localhost:80)。
  • 测试本地应用可用性
    在VPS本地执行curl http://127.0.0.1:80,验证应用是否正常响应:

    • 如果返回500错误,检查Flask模板路径:确保index.html位于项目根目录下的templates文件夹内,项目结构应为:
      project_root/
      ├── app.py
      └── templates/
          └── index.html
      
    • 如果返回连接拒绝,说明Gunicorn未正确加载应用,检查启动命令中的app:create_app()是否正确,确保app.py在当前工作目录,或使用绝对路径指定(如/opt/my_app/app:create_app())。
  • 网络连通性验证

    • 本地执行ping 你的公网IPv4地址,如果无法ping通,联系VPS服务商确认公网IP状态及网络链路。
    • 用nc -zv 你的公网IPv4地址 80测试端口连通性,若提示Connection refused,回到前面的防火墙和监听检查步骤。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 04:01:04