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

如何使用gunicorn将Python Flask应用部署为可公网访问的服务

公网访问Flask应用解决方案

无法公网访问的核心原因

你当前获取的192.168.x.x属于局域网保留IP,仅能在当前本地网络内访问。本地家庭/办公网络默认没有对外暴露的独立公网IP,外部网络无法直接寻址到你运行服务的本地机器。

可落地的部署方案

方案1:云服务器部署(生产环境首选,稳定性最高)

如果可切换到Ubuntu系统,优先选择云服务器部署,步骤如下:

  1. 将Flask项目代码同步到云服务器的venv虚拟环境中,安装所有依赖
  2. 启动gunicorn服务:
    gunicorn -w 4 -b 0.0.0.0:5000 server:app
    
    其中-w参数为工作进程数,建议设置为服务器CPU核心数的2倍+1
  3. 放行端口访问权限:
    • 云服务器后台安全组规则中添加5000端口的入站放行规则
    • 系统防火墙放行对应端口,Ubuntu下执行ufw allow 5000/tcp,macOS下在系统偏好设置-安全与隐私-防火墙中添加端口放行规则
  4. 直接通过云服务器的公网IP+5000端口即可公网访问,如需正式上线可搭配Nginx做反向代理,处理静态资源、SSL证书配置、负载均衡等需求,进一步提升性能和安全性。

方案2:本地机器暴露公网(仅适合临时测试使用)

如果必须在本地机器部署对外提供访问,两种实现路径:

  1. 公网IP端口映射
    先联系宽带运营商确认是否分配了公网IP,如已分配,进入路由器管理后台,设置端口映射规则,将路由器的5000端口映射到运行服务的本地机器的内网IP+5000端口,同时放行路由器防火墙的5000端口,之后通过宽带的公网IP即可访问。注意该方案会将本地机器直接暴露在公网,安全风险较高,仅建议临时测试使用,不要长期开启
  2. 内网穿透
    如没有公网IP,可使用ngrok、frp等内网穿透工具,本地启动gunicorn服务后,运行内网穿透工具绑定5000端口,即可生成临时公网访问地址,外部网络直接访问该地址即可连通本地服务。

本地部署的优化建议

你当前选用的gunicorn已经是Flask生态下成熟的生产级WSGI服务器,不需要更换框架,可从以下几点优化部署稳定性:

  • 配置进程守护:Ubuntu下可使用systemd,macOS下可使用launchd,配置服务开机自启、异常自动重启,避免服务意外中断
  • 搭配Nginx反向代理:由Nginx处理静态资源请求、流量限制、HTTPS配置等需求,再将动态请求转发给gunicorn,性能和安全性都有明显提升
  • 最小权限运行服务:不要用root权限启动gunicorn,使用独立的普通用户运行,降低安全风险

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 13:24:04