AWS EC2 Web服务器无法访问问题排查(已配置安全组)
排查EC2 Web服务器无法访问的步骤
1. 验证实例基础状态
- 确认EC2实例处于运行中状态,且系统状态检查、实例状态检查均显示正常。若状态检查失败,先重启实例再测试。
- 确认实例已分配公网IP,若使用弹性IP,需确认已成功关联到实例。
2. 检查用户数据脚本执行情况
用户数据可能未正确执行,通过以下操作验证:
- 登录实例,查看用户数据执行日志:
cat /var/log/cloud-init-output.log,搜索httpd相关内容,确认:yum install是否完成,有无包下载失败等报错systemctl start httpd.service是否执行成功,有无启动失败提示
- 执行
systemctl status httpd,确认httpd服务处于**active (running)**状态。若未运行,尝试systemctl restart httpd并查看报错信息。 - 检查网页文件是否存在且内容正确:
cat /var/www/html/index.html,确认输出包含主机名的Hello World内容。
3. 排查实例内部防火墙
即使安全组放行,实例内部防火墙仍可能拦截80端口:
- 对于Amazon Linux 2,默认使用firewalld,执行
firewall-cmd --list-all,确认是否允许http服务或80端口。若未允许,执行:firewall-cmd --add-service=http --permanent firewall-cmd --reload - 若使用iptables,执行
iptables -L -n,确认存在允许80端口的规则。若没有,添加规则:
之后保存规则(不同系统保存命令不同,如iptables -A INPUT -p tcp --dport 80 -j ACCEPTservice iptables save)。
4. 确认安全组与网络ACL配置
- 安全组:入站规则需允许
0.0.0.0/0(或你的本地IP)访问TCP 80端口;出站规则默认允许所有流量,若修改过需确认未限制响应流量。 - 网络ACL:若子网的网络ACL非默认配置,需确保:
- 入站规则允许TCP 80端口(源
0.0.0.0/0,动作允许) - 出站规则允许TCP 1024-65535端口(客户端访问的响应流量使用随机高端口,需放行)
网络ACL是非状态化的,入站、出站规则需成对配置。
- 入站规则允许TCP 80端口(源
5. 测试网络连通性
- 本地机器执行
telnet <公网IP> 80或curl <公网IP>:若提示连接超时,说明网络链路被拦截;若curl返回内容,可能是浏览器缓存问题。 - 实例内部执行
curl localhost:80:若能返回Hello World,说明服务本身正常,问题出在外部网络;若不能,说明httpd服务或配置存在问题。
6. 浏览器端排查
- 清除浏览器缓存,或使用隐私模式访问,避免缓存的错误页面干扰。
- 切换网络(如手机热点)测试,排除本地网络(公司防火墙、家庭路由器)对80端口的拦截。
内容的提问来源于stack exchange,提问作者michele
相关产品推荐
相关产品推荐

