Azure Ubuntu 22中Flask 80端口无法从本地浏览器访问的求助
Flask服务本地无法访问排查建议
检查Flask绑定地址
默认flask run仅绑定127.0.0.1,仅支持虚拟机内部访问。启动时需指定绑定所有网卡:flask run -p 80 --host=0.0.0.0。可通过netstat -tulpn | grep 80或ss -tulpn | grep 80确认监听地址,确保显示0.0.0.0:80而非127.0.0.1:80。重验Ubuntu系统防火墙规则
- 用
sudo ufw status查看UFW规则,确认存在ALLOW 80/tcp条目。 - 若使用iptables,执行
sudo iptables -L -n | grep 80,检查是否有允许80端口入站的规则。
- 用
确认Azure虚拟机公网IP
本地浏览器需访问虚拟机的公网IP,而非私网IP。可在Azure门户虚拟机概览页查看公网IP,或在虚拟机内执行curl ifconfig.me获取,对比你访问的地址是否一致。核查Azure NSG规则细节
- 优先级:确保允许80端口的规则优先级高于其他拒绝规则,避免被覆盖。
- 源地址:规则源地址需设为
Any或你的本地公网IP,若限制过严会导致本地无法访问。 - 关联对象:确认NSG已绑定到虚拟机的对应网卡或子网,未绑定的规则不会生效。
测试本地到虚拟机的连通性
在本地执行telnet <虚拟机公网IP> 80或curl <虚拟机公网IP>:- 若连接超时,说明网络层面仍有阻断;
- 若能连接但返回错误,需排查Flask服务本身问题。
检查NSG出站规则
虽主要关注入站,但虚拟机无法返回响应也会导致访问失败。确认NSG出站规则允许80端口的响应流量(默认出站规则为允许所有,可再次确认)。验证Flask服务运行状态
查看Flask运行日志,排查是否有报错或意外停止:- 终端直接启动的话,检查终端输出;
- 后台运行的话,查看对应日志文件。
排除本地网络限制
本地网络的防火墙、代理可能阻断80端口访问,可切换至手机热点网络尝试访问,排除本地网络问题。
内容的提问来源于stack exchange,提问作者Harly Chen
相关产品推荐
相关产品推荐

