nginx公网IP无法访问浏览器

本文记录了解决服务器80端口无法通过浏览器访问的问题过程,包括排查网络、防火墙、进程占用等问题,最终发现是由于阿里云服务器安全组规则未包含HTTP导致。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

配置服务器时候发现的问题,真的是搜肠刮肚的找答案,找一下午,终于找到了答案。

一、开始找原因

在浏览器输入:http://ip,正常的话,会有页面,welcome to nginx
我这里是浏览器访问失败,
查找原因:

1、在服务器上访问Ip

执行:curl http://ip
结果:超时,未连接成功

查看nginxaccess.log日志,发现日志未滚动,代表本机访问不到公网ip

2、确认网络是否可达

telnet 12x.xx.x.xx 80
Trying 12x.xx.x.xx...
Connected to 12x.xx.x.xx.
Escape character is '^]'.

这样就说明网络上可达,并且TCP三次握手可以完成,因为能telnet通,排除了网络不通的情况
但是我本地的网络不通。

3、是否受防火墙安全控制等。

将iptables和selinux关闭
以下4条命令清除iptables的配置

iptables -F
iptables -F -t nat
iptables -X
iptables -X -t nat

setenforce 0 #关闭selinux
重新远程访问,还是失败。说明不是防火墙的原因。这里因为我是debian,所以默认是没有开启防火墙的,所以不是这个原因。

4、去/var/log/nginx/error.log查看错误日志

日志报错:Address already in use
这里就已经确认错误在哪了,原来是80端口被占用的问题。

5、解决方案

1)执行:lsof -i:80 查看此时哪个进程正在使用80端口
我这边发现是阿里云盾正在使用80端口

2)杀掉云盾进程,重启nginx试试
kill -s 9 pid
具体参考博客:http://blog.csdn.net/ljfphp/article/details/78666376

6、好吧,惊奇的发现,通过浏览器还是访问不了nginx,但是此刻我的80端口已经被nginx监听了。继续查看错误日志。错误日志并没刷新。

7、百度发现有人说是iptables防火墙的原因,但是debian系统的安装默认是没有iptables,所以应该不是防火墙的原因。

8、看到有人说,是没有备案域名的原因,80端口默认是关闭状态。好吧,我准备改成8080端口,看看能不能行吧。(这个没来得及试)

二、真正的凶手

      终于找到问题了,眼泪差点掉下来。原来是阿里云的问题。我刚开通的服务器,没有设置安全组规则。下面给大家演示一下安全组怎么设置。
1、进入云服务控制台

2、找到安全组,点击进入
这里写图片描述
3、在默认的一个安全组上,有一个配置规则按钮。点击配置规则
这里写图片描述
4、这是我原来的安全组规则,没有http的

这里写图片描述

5、按照如图所示添加

这里写图片描述

6、浏览器访问ip成功
这里写图片描述

配置好安全规则之后,我们就能在浏览器通过ip访问了。。千想万想,没想到会收到来自阿里云的GANK,很绝望。。不过在查错过程中也学到了很多,记录一下。

end

### 如何排查和解决服务器公网IP不能访问的原因及解决方案 #### 安全组规则配置 对于云服务环境中的服务器,安全组充当着虚拟防火墙的角色。当遇到通过公网 IP 访问服务器失败的情况时,应确认安全组设置是否允许所需的流量进入。例如,在处理 HTTP 请求时,需确保针对 TCP 协议的第 80 端口已开放[^2]。 #### 防火墙入站规则调整 除了云端的安全措施外,还需审查操作系统层面的防火墙策略。如果发现即使安全组配置无误仍无法连接,则可能是本地防火墙阻止了外部请求。此时应当核查并适当放宽防火墙的入站规则来放通必要的端口号,比如 Web 流量常用的 80 或者 HTTPS 的 443 端口。 #### 远程调试与测试工具的应用 为了进一步诊断网络连通性和性能问题,可以利用多种在线或离线工具来进行辅助分析。这包括但不限于 `ping` 命令用于检测基本可达性;`traceroute` (Linux/macOS 下) 或 `tracert`(Windows下) 来追踪数据包路径;以及更专业的软件如 Wireshark 抓取并解析通信报文等。 ```bash # 使用 ping 工具检查主机存活状态 ping your_public_ip_address # 跟踪路由情况 traceroute your_public_ip_address # Linux/macOS tracert your_public_ip_address # Windows ``` #### DNS 解析验证 有时尽管一切看起来都正确设置了,但由于域名系统(DNS)缓存或其他因素影响到了实际解析结果,也会造成看似不可达的现象。因此建议定期清除浏览器DNS缓存、尝试更换公共DNS服务商(如 Google Public DNS, Cloudflare),甚至直接采用 IP 地址代替 FQDN 方式进行访问以排除此类干扰项。 #### 日志文件审阅 最后但同样重要的是查看Web服务器的日志记录。Apache 和 Nginx 等常见 web server 提供详细的错误日志可以帮助定位具体原因所在。通常这些日志会保存在 `/var/log/nginx/error.log` 或 `/var/log/apache2/error.log` 中视安装而定。
评论 49
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

铁柱同学

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值