阿里云服务器 nginx公网IP无法访问浏览器

本文详细记录了解决阿里云服务器上Nginx无法通过公网IP访问的问题过程,包括排查网络、防火墙设置、端口冲突及安全组配置等方面。

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

转载自:https://blog.youkuaiyun.com/LJFPHP/article/details/78670459

一、开始找原因

在浏览器输入: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 '^]'.
  • 1
  • 2
  • 4

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

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

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

iptables -F
iptables -F -t nat
iptables -X
iptables -X -t nat
  • 1
  • 2
  • 4

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.youkuaiyun.com/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

### 阿里云服务器 Nginx 无法访问解决方案 #### 安全组设置 对于新创建的阿里云 ECS 实例,默认情况下并未开放任何入站流量。因此,当尝试通过公网 IP 访问运行于该实例上的 Web 应用程序时可能会遇到连接超时等问题。为了使外部能够正常访问部署在 ECS 上的服务,需确保已正确配置安全组规则来允许特定端口(如 HTTP 的 80 端口)的数据流入。 具体操作如下: 1. 登录至阿里云管理平台; 2. 寻找并点击左侧菜单中的“网络与安全”下的“安全组”,随后选择目标地域及对应的安全组; 3. 在所选安全组详情页内新增一条或多条自定义 TCP 类型的入方向授权策略,设定协议类型为TCP、端口范围设为`80/80`,源地址可填写`0.0.0.0/0`(表示来自任意IP),最后保存更改[^3]; #### 检查防火墙状态 除了上述提到的安全组外,Linux 系统自带的 iptables 或 firewalld 可能也会阻止外界请求到达应用程序监听的端口。可以通过执行相应指令查看当前系统的防火墙状况以及是否有必要调整其配置以放行必要的通信端口。 例如,在 CentOS/RHEL 发行版下启用 `firewall-cmd` 工具查询现有规则集: ```bash sudo firewall-cmd --list-all ``` 如果发现缺少针对第 80 号端口的相关许可,则应添加之: ```bash sudo firewall-cmd --reload ``` 而对于采用 Debian/Ubuntu 的用户来说,可能更倾向于使用 ufw 来简化这一过程: ```bash sudo ufw allow 'Nginx Full' sudo ufw reload ``` #### 测试本地服务可用性 确认以上两项工作完成后,建议先利用 curl 或者浏览器直接向 localhost 地址发起测试请求,验证 Nginx 是否能够在本机内部成功响应。这一步骤有助于排除因软件安装不当或其他环境因素引起的潜在错误。 ```bash curl http://localhost:80 ``` 一旦确定了 Nginx 能够稳定提供预期的内容之后再考虑进一步排查其他方面的问题。 #### 查看日志文件 假如即便经过前述处理仍然存在异常情况的话,那么不妨查阅位于 `/var/log/nginx/error.log` 中的日志记录寻找线索。这些信息往往包含了关于最近发生的各类事件描述及其上下文细节,从而帮助定位故障根源所在之处。 ---
评论 16
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值