AWS EC2 Ubuntu实例Apache服务公网连接失败求助
排查EC2实例公网无法访问Apache服务的步骤
结合你的场景(可SSH连接、实例能正常访问外网、Apache服务已运行),按以下顺序逐一排查:
验证弹性IP关联状态
登录AWS控制台,进入EC2实例详情页的「网络」标签,确认弹性IP显示「已关联」,且实例的公网IP与你尝试访问的IP完全一致。检查VPC网络ACL规则
网络ACL是VPC层面的防火墙,优先级高于安全组:- 找到实例所在子网关联的网络ACL
- 入站规则需添加:
- 允许
0.0.0.0/0的TCP 80、443端口 - 若需要ping功能,允许
0.0.0.0/0的ICMP(类型8,代码0)请求
- 允许
- 出站规则需确保允许所有流量(或至少允许TCP 80、443的出站响应)
检查Ubuntu本地防火墙(ufw)
Ubuntu默认可能启用ufw,执行以下命令查看状态:sudo ufw status若显示
active,需添加HTTP/HTTPS规则:sudo ufw allow 80/tcp sudo ufw allow 443/tcp sudo ufw reload若不需要本地防火墙,可直接禁用:
sudo ufw disable确认Apache监听地址
确保Apache不是仅监听本地回环地址,执行:ss -tulpn | grep apache2正常输出应包含
0.0.0.0:80或:::80(表示监听所有网卡)。若仅显示127.0.0.1:80,需修改Apache配置:- 编辑
/etc/apache2/ports.conf,确认Listen 80未绑定到127.0.0.1 - 重启Apache服务:
sudo systemctl restart apache2
- 编辑
检查子网路由表
确认实例所在子网的路由表包含指向互联网网关(IGW)的默认路由:- 进入子网详情页,查看关联的路由表
- 确保存在
0.0.0.0/0→ 互联网网关(igw-xxxxxx)的路由条目
排查ping不通的问题
除了上述安全组、网络ACL、本地防火墙的ICMP规则外,还需确认:- 弹性IP未被AWS屏蔽(罕见,但可尝试解绑后重新关联)
- 本地网络未封禁ICMP请求(可换其他网络环境测试)
内容的提问来源于stack exchange,提问作者Charlie Bi
相关产品推荐
相关产品推荐

