Flask服务始终指向本地IP,如何配置为公网IP访问?
如何让Flask应用通过公网IP访问
一、确认Flask基础配置
你当前代码里的app.run(debug=True, host="0.0.0.0")配置是正确的——这会让Flask监听本机所有网卡,已经具备了被公网访问的基础条件。接下来要解决的是网络层面的连通问题。
二、实现公网访问的具体步骤
1. 检查本机是否有独立公网IP
打开命令提示符(cmd),执行 ipconfig 查看网络配置,或者执行 curl ifconfig.me 获取当前对外暴露的IP:
- 如果得到的是类似
120.XX.XX.XX这类公网IP,直接跳至步骤3; - 如果是
192.168.X.X或10.X.X.X这类内网IP,说明你的机器在路由器/网关后方,需要做端口转发或用内网穿透工具。
2. 路由器端口转发(内网机器必备)
登录路由器管理后台(通常地址是192.168.1.1或192.168.0.1,具体看路由器底部标签),找到「端口转发」或「虚拟服务器」选项,添加规则:
- 外部端口:选一个未被占用的端口(比如
5000,和Flask默认端口一致,或自定义8080) - 内部IP:你的局域网IP(
ipconfig里的IPv4地址) - 内部端口:Flask运行的端口(默认
5000,若修改过则填对应值) - 协议:选择
TCP(或TCP+UDP)
保存后,外网即可通过「公网IP:外部端口」访问你的Flask应用。
3. 关闭Windows防火墙限制
打开「Windows Defender防火墙」→「高级设置」→「入站规则」,新建规则:
- 规则类型选「端口」,指定Flask使用的端口(如
5000) - 允许连接,应用于所有网络类型
- 命名规则后保存,确保防火墙不会拦截外部请求。
4. 内网穿透工具(无公网IP时使用)
如果无法获取独立公网IP,可借助内网穿透工具快速实现公网访问:
- ngrok:下载工具后,在命令行执行
ngrok http 5000,工具会生成一个临时公网域名,直接用该域名即可访问你的Flask应用。 - FRP:适合长期使用,需自行搭建公网服务端,配置客户端映射内网端口。
三、安全提醒
- 公网环境下禁止开启
debug=True,该模式存在代码执行等安全风险,上线时务必改为debug=False。 - 若使用自定义端口,启动Flask时需明确指定,例如:
if __name__ == '__main__': app.run(debug=False, host="0.0.0.0", port=8080)
内容的提问来源于stack exchange,提问作者Mark
相关产品推荐
相关产品推荐

