EC2实例公网访问超时求助:无法通过公网DNS打开测试页
EC2 Apache公网访问故障排查与解决
问题背景
在EC2实例上运行Apache服务,本地执行curl localhost能正常返回测试页,但通过公网DNS访问时:
- 仅开放80端口时提示"EC2 Instance took too long to respond"
- 添加443端口后提示"refused to connect"
已确认Apache服务处于运行状态,安全组已开放22、80、443端口。
排查与解决步骤
1. 确认Apache监听地址
Apache可能仅绑定了本地回环地址(127.0.0.1),导致外部无法访问。执行以下命令检查监听情况:
netstat -tulpn | grep httpd
如果输出仅显示127.0.0.1:80,修改Apache主配置文件(通常为/etc/httpd/conf/httpd.conf):
找到Listen行,修改为:
Listen 0.0.0.0:80
重启Apache生效:
sudo systemctl restart httpd
2. 修正安全组入站规则
安全组需确保入站规则正确配置:
- 类型:HTTP
- 协议:TCP
- 端口范围:80
- 来源:
0.0.0.0/0(测试场景,生产环境建议限制特定IP段)
注:443端口出现连接拒绝是因为未配置SSL证书及监听,无需开启该端口,先聚焦解决80端口访问问题。
3. 检查子网网络ACL(若启用)
如果实例所在子网配置了网络ACL,需双向放行80端口:
- 入站规则:允许TCP 80端口,来源
0.0.0.0/0 - 出站规则:允许TCP 80端口,目标
0.0.0.0/0
网络ACL为无状态规则,必须同时配置入站和出站。
4. 验证实例公网访问能力
- 检查EC2实例是否分配了公网IP:在控制台实例详情中查看「公网IPv4地址」,为空则需分配弹性公网IP
- 确认子网路由表包含指向Internet Gateway(IGW)的路由条目
5. 本地网络测试
在本地终端执行命令测试连通性:
curl -v http://<EC2公网DNS地址>
若仍超时,排查本地网络是否存在防火墙、代理限制,可切换网络环境重试。
内容的提问来源于stack exchange,提问作者ITDecrypted
相关产品推荐
相关产品推荐

