部署在AWS EC2的Flask应用无法访问问题求助
解决AWS EC2上Flask应用5000端口无法访问的问题
先排查实例内部端口监听状态
本地curl 127.0.0.1:5000失败,说明问题出在实例内部,先确认Flask进程是否真的在监听5000端口:
ss -tulpn | grep 5000 # 若未安装ss,用netstat(需先安装net-tools) netstat -tulpn | grep 5000
如果没有任何输出,说明Flask进程未成功监听端口,检查启动日志:
- 运行
python main.py时,确认是否出现类似以下启动日志:
若没有该输出,尝试把* Serving Flask app 'main' * Debug mode: off * Running on all addresses (0.0.0.0) * Running on http://127.0.0.1:5000 Press CTRL+C to quitport='5000'改为整数port=5000,再重新启动应用。
检查实例内部防火墙规则
虽然未安装ufw,但EC2默认可能存在iptables规则限制端口,执行以下命令查看:
iptables -L -n
如果发现拒绝5000端口的规则,添加允许规则:
sudo iptables -A INPUT -p tcp --dport 5000 -j ACCEPT
补充验证安全组规则
确认安全组配置无误:
- 入站规则类型为TCP,端口范围5000,来源为
0.0.0.0/0(或你指定的访问IP) - 该安全组已绑定到目标EC2实例
代码规范优化(不影响访问,但修复响应逻辑)
你的testprint()函数直接在全局作用域调用,仅启动时打印一次,且未返回HTTP响应,访问根路径会触发500错误,优化后写法:
from flask import Flask app = Flask(__name__) @app.route("/") def testprint(): print(''' text test ''') return "Flask应用正常响应" # 添加HTTP响应内容 if __name__ == "__main__": app.run(host='0.0.0.0', port=5000)
内容的提问来源于stack exchange,提问作者Dragos
相关产品推荐
相关产品推荐

