AWS EC2(Amazon Linux)8080端口无法连接问题求助
排查EC2实例8080端口Flask服务无法访问的问题
以下是逐步排查的步骤,按优先级从高到低:
验证Flask服务的监听配置
首先确认Flask是否绑定了正确的地址并在8080端口监听:- 执行命令查看端口监听状态:
ss -tulpn | grep 8080 - 输出中如果监听地址是
127.0.0.1,说明服务只绑定了本地回环,外部无法访问。需要修改Flask启动代码,指定绑定所有网卡:app.run(host='0.0.0.0', port=8080) - 同时确认服务是否正常运行,用
ps aux | grep flask检查进程状态。
- 执行命令查看端口监听状态:
检查实例本地防火墙规则
Amazon Linux默认可能启用了firewalld或iptables,需要确保8080端口被允许:- 若使用firewalld:
- 查看状态:
sudo systemctl status firewalld - 开放端口:
sudo firewall-cmd --permanent --add-port=8080/tcp - 重载规则:
sudo firewall-cmd --reload
- 查看状态:
- 若使用iptables:
- 查看现有规则:
sudo iptables -L -n - 添加允许规则:
sudo iptables -A INPUT -p tcp --dport 8080 -j ACCEPT - 保存规则:
sudo service iptables save
- 查看现有规则:
- 若使用firewalld:
再次核对安全组配置
即使你已开放端口,仍需确认细节:- 确认关联到EC2实例的安全组中,入站规则包含
TCP 8080,来源为0.0.0.0/0(或你需要的特定IP段) - 检查规则是否生效,避免端口号写错、安全组关联错误等低级问题。
- 确认关联到EC2实例的安全组中,入站规则包含
检查网络ACL配置
若你自定义了VPC的网络ACL,需确保:- 入站规则允许
TCP 8080端口的流量 - 出站规则允许
TCP 1024-65535端口的响应流量(默认网络ACL无需修改)
- 入站规则允许
本地测试服务可用性
在EC2实例内部执行curl localhost:8080或curl <实例私有IP>:8080:- 如果内部访问失败,说明服务本身未正常启动或配置有误,优先排查Flask代码、依赖包是否安装完整
- 如果内部访问正常,问题则集中在外部网络层面(安全组、网络ACL、防火墙)
内容的提问来源于stack exchange,提问作者Rahul Gupta
相关产品推荐
相关产品推荐

