1. 问题引入:为什么安全组开了80端口,Nginx还是访问不了?
最近在华为云上部署一个简单的Web服务,我猜很多朋友都遇到过这个情况:明明已经在控制台的安全组里,认认真真地添加入方向规则,放行了TCP 80端口,满心欢喜地打开浏览器输入ECS的公网IP,结果等来的却是一个“无法访问此网站”的页面,或者连接超时。
我当时也卡在这里好一会儿,心里直犯嘀咕:“华为云这安全组配置是不是有延迟?还是我哪里操作错了?” 反复检查控制台,规则明明就在那里,状态也是“已生效”。如果你也遇到了同样的问题,先别急着怀疑云服务商,更别想着重装系统。这个问题非常典型,根源往往不在云平台那一层,而在于我们自己的服务器内部。
在云计算的网络模型里,流量从互联网到达你的应用,就像要穿过好几道“安检门”。华为云的安全组是其中最外围、也是最重要的一道门,它直接关联着你的弹性云服务器(ECS)实例。你配置了允许80端口的流量进入,这相当于告诉最外层的保安:“放行所有想去80端口拜访的客人”。但是,客人(网络请求)进了大楼(ECS实例)之后,还可能被内部的“保安系统”拦下来,比如操作系统自带的防火墙(Firewalld或iptables),甚至是Nginx服务本身的配置。所以,当外网无法访问时,我们需要一个由外到内、逐层深入的排查思路。
接下来的内容,我会结合自己踩过的坑和实战经验,带你走一遍完整的排查流程。咱们不搞复杂的理论,就用手敲的命令和实际的配置,一步步把问题揪出来。你会发现,绝大多数情况下,问题就出在那几个常见的地方。
2. 第一道门:确认华为云安全组配置无误
排查的第一步,我们必须确保最基础的云平台网络策略是正确的。很多朋友觉得自己配置过了,但可能忽略了细节。
2.1 登录控制台仔细核对规则
首先,登录华为云控制台,找到你的ECS实例。进入详情页后,切换到“安全组”标签页。这里你要重点看以下几个点:
- 方向:必须是“入方向”。出方向默认是全放通的,不影响外部访问。
- 协议端口:确认是
TCP:80。有时候手滑会写成UDP或者端口范围不对。 - 源地址:如果你只是测试,通常设置为
0.0.0.0/0,表示允许所有IPv4地址访问。但在生产环境,建议根据实际情况缩小授权范围,比如只允许公司的出口IP。 - 优先级:数值越小,优先级越高。确保你的80端口规则没有被更高优先级(数字更小)的拒绝规则所覆盖。安全组的规则是匹配即生效的。
我遇到过一种情况,用户先添加了一条拒绝所有端口的高优先级规则(比如优先级为1),然后又添加了允许80端口的规则(优先级为100)。由于高优先级的拒绝规则先匹配,导致80端口实际上还是被拒绝了。所以,规则的顺序和优先级至关重要。
2.2 别忘了网络ACL(如果需要)
安全组是作用于弹性云服务器实例级别的。如果你的ECS所在的子网配置了网络ACL,那么它也会对子网内的流量进行过滤。网络ACL是无状态的,需要分别配置入方向和出方向规则。
检查路径:在控制台进入VPC服务,找到你的子网,查看关联的网络ACL规则。同样,你需要确保网络ACL的入方向规则允许TCP 80端口,并且出方向规则也允许相关的响应流量(通常允许所有出站或至少允许临时端口范围)。对于大多数简单场景,如果没动过网络ACL,它默认是放行所有流量的,但如果你做过复杂网络规划,这里就需要检查一下。
3. 第二道门:检查服务器内的Nginx服务状态
假设云平台的“安检门”已经确认敞开,下一步我们就需要登录到ECS实例内部,看看Nginx这位“接待员”是否在岗并正常工作。
3.1 远程连接与基础服务检查
使用SSH工具连接到你的华为云ECS。连接成功后,第一件事就是确认Nginx服务是否真的运行起来了。


330

被折叠的 条评论
为什么被折叠?



