如何在AWS私有子网托管的EC2实例中安装Nginx并解决访问异常
AWS私有子网EC2实例Nginx curl访问失败排查方案
1. 确认Nginx服务运行状态
- 检查Nginx进程是否正常启动:
ps -ef | grep nginx,如果无master、worker进程,查看错误日志定位启动失败原因:cat /var/log/nginx/error.log,不同发行版日志路径可自行调整。 - 校验Nginx配置文件合法性:
nginx -t,如返回配置错误,按提示修正后重启服务:systemctl restart nginx。 - 检查Nginx端口监听配置:
ss -tulnp | grep nginx,确认是否监听预期端口(默认80),如无对应监听记录,执行ss -tulnp | grep :80查看80端口是否被其他服务占用,可停止占用进程或修改Nginx监听端口解决。
2. 排查实例本地访问限制
- 本地curl 127.0.0.1仍无法访问的场景:
- 查看Nginx监听地址配置,如仅监听127.0.0.1,需将nginx.conf对应listen项修改为
listen 0.0.0.0:80;或实例私有IP,重启后生效。 - 检查/etc/hosts配置,确认localhost解析指向127.0.0.1。
- 查看Nginx监听地址配置,如仅监听127.0.0.1,需将nginx.conf对应listen项修改为
- 关闭本地防火墙拦截:
- Ubuntu ufw防火墙:执行
ufw status确认是否开启,如开启执行ufw allow 80/tcp放通HTTP端口。 - CentOS firewalld防火墙:执行
firewall-cmd --list-all确认是否开启,如开启执行firewall-cmd --add-service=http --permanent && firewall-cmd --reload放通规则。
- Ubuntu ufw防火墙:执行
- 排查SELinux拦截:执行
getenforce,如返回Enforcing,临时关闭测试:setenforce 0,访问恢复后需调整SELinux HTTP相关规则,不建议直接永久关闭SELinux。
3. 同VPC跨实例访问失败排查
- 检查EC2关联安全组入站规则,确认放通对应源IP/网段的80端口入站流量。
- 检查子网关联的网络ACL规则,网络ACL为无状态规则,需同时放通入站80端口、出站临时端口范围(1024-65535)的流量。
- 确认私有子网路由表配置无自定义路由拦截同VPC内部流量。
内容的提问来源于stack exchange,提问作者SHARAN SUTRAPU
相关产品推荐
相关产品推荐

