本地应用访问AWS EC2容器化应用超时问题排查求助
排查步骤
1. 验证EC2主机到容器的本地连通性
在EC2实例内部执行curl localhost:80或telnet localhost 80,确认能正常访问容器内的服务:
- 如果不通:检查容器内应用是否监听
0.0.0.0:<内部端口>(而非仅localhost:<内部端口>)—— 若应用只绑定localhost,即使端口映射正确,EC2主机也无法访问;同时核对docker ps的PORTS列,确认映射规则是0.0.0.0:80-><内部端口>/tcp,内部端口需和应用监听端口完全一致。
2. 确认EC2安全组与网络ACL配置
- 安全组入站规则:确保已添加
HTTP (80)规则,来源范围覆盖主应用所在的IP(测试阶段可临时设为0.0.0.0/0排除权限问题);同时检查安全组出站规则是否允许所有流量(或至少允许响应主应用请求的流量)。 - 网络ACL:EC2所在子网的网络ACL需同时配置入站和出站规则,允许80端口的TCP流量(入站规则允许主应用的请求进入,出站规则允许容器的响应返回)。
3. 测试主应用主机到EC2公网IP的连通性
在主应用所在主机执行curl <EC2公网IP>:80或telnet <EC2公网IP> 80:
- 如果不通:检查主应用所在网络的出站防火墙/规则,是否限制了访问该EC2公网IP或80端口;同时确认EC2实例已分配并关联有效的公网IP(弹性IP或实例公网IP),且实例处于"运行中"状态。
4. 检查EC2实例本地防火墙
部分EC2系统(如Amazon Linux 2、CentOS)自带firewalld或iptables,执行以下命令确认80端口未被拦截:
sudo firewall-cmd --list-all(firewalld环境),查看services里是否包含http,或ports里有80/tcp;sudo iptables -L(iptables环境),查看INPUT链是否有允许80端口的规则。
5. 查看容器应用日志
执行docker logs <容器ID/名称>,检查应用是否正常启动、是否监听正确端口,以及是否有收到连接请求的记录:
- 如果日志显示无请求到达:说明流量未穿透到容器,回到前几步排查网络链路;
- 如果日志显示请求到达但报错:针对应用内部错误进一步排查(如路由配置、服务启动异常)。
内容的提问来源于stack exchange,提问作者Holland Park
相关产品推荐
相关产品推荐

