AWS Ubuntu EC2实例安装Nginx后无法通过公网IP访问求助
别着急,作为新手遇到这种情况太正常了,我来帮你一步步排查问题,咱们慢慢找到原因解决它~
下面是几个关键的排查步骤:
确认EC2实例的公网访问地址是否正确
先去AWS控制台的EC2实例详情页,核对一下你在浏览器里输入的是不是实例的公网IP或者公网DNS。要注意:如果没给实例绑定弹性IP,重启实例后公网IP会发生变化,别用错了旧IP哦。也可以试试用公网DNS访问,格式大概是ec2-xx-xx-xx-xx.region.compute.amazonaws.com。检查安全组的出站规则
你提到已经开了入站的所有流量,但有时候出站规则如果被限制,Nginx也没法正常响应请求。默认安全组的出站规则是允许所有流量的,但还是确认下:进入安全组的「出站规则」标签,看看是否存在允许所有TCP/UDP/ICMP流量到0.0.0.0/0的规则。在实例内部验证Nginx的运行状态
登录到EC2实例后,先执行curl localhost或者curl 127.0.0.1,看看能不能返回Nginx的默认欢迎页面。如果能返回,说明Nginx本身运行正常,问题出在网络层面;如果不能返回,那可能是Nginx的配置有问题(不过你说状态是active,大概率没问题,但还是验证下更稳妥)。
再执行sudo netstat -tulpn | grep nginx,检查Nginx是否在监听80端口,并且是监听所有IP(输出里应该有0.0.0.0:80)。如果只是监听127.0.0.1:80,那公网就访问不了,不过默认配置是监听所有IP的,这一步主要是排除特殊情况。检查Ubuntu本地防火墙(ufw)
这是新手最容易忽略的点!Ubuntu系统默认可能开启了ufw防火墙,即使AWS安全组放行了,本地防火墙也会挡住80端口的请求。执行sudo ufw status查看防火墙状态,如果显示active,就执行sudo ufw allow 80/tcp来允许80端口的流量,然后再试试访问公网IP。排除本地网络的限制
有时候你的家庭或公司网络会屏蔽80端口,导致无法访问。可以试试切换到手机热点网络,或者换个环境访问,排除本地网络的问题。
备注:内容来源于stack exchange,提问作者MUHAMMED SWADHIQ VK

