## 症状现象
SSH 登录服务器一切正常,Nginx 在跑、端口在听、页面文件都在,从外面访问却超时或拒绝。服务器本身健康,问题出在"外部到 80、443 端口"这条通路被挡。最常见的场景:新购服务器刚部署网站、重装系统后规则丢失、或调整安全策略时顺手删了放行规则。这类工单占比极高,自查十分钟就能出结论。
## 第一步:本机验证服务
先确认服务真的在正常工作,排除应用层问题:
bash curl -I 127.0.0.1 ss -tlnp | grep -E ':80|:443'
本机 curl 返回正常响应头、端口处于监听状态且地址不是仅回环,应用层没问题。本机都不通的话,先修 Web 服务再来查网络,方向完全不同。这一步的价值是把问题切成两半,本机通而外部不通,才继续往下走。
## 第二步:外部探测定位
从外部对公网 IP 做端口探测,可以用手机热点加手机工具,或外部探测服务:
bash nc -zv 服务器公网IP 80 nc -zv 服务器公网IP 443
两种结果两种指向:connection refused 说明包到了服务器但被拒,查系统内防火墙;timeout 说明包根本没进来,查平台侧规则。有时 22 通而 80 不通,更说明是按端口的放行差异,而不是整机网络问题。
## 第三步:两层防火墙核对
平台侧:登录顺云控制台,核对防火墙规则是否放行 80 与 443 的 TCP 入方向,来源限制有没有把自己排除。规则改动后不生效的,确认规则状态已应用。系统内:firewalld 用 firewall-cmd --list-all 查看,iptables 用 iptables -L INPUT -n 对照,放行缺失就补上并持久化。两层是串联关系,任何一层挡住都不通,规则核对要两层都过一遍才算完。
**预防。**新机初始化模板里固化端口放行清单:22、80、443 一次到位,后续按需增减。每次安全策略变更后跑一遍外部可达性自检脚本,把"改完就忘"变成"改完必验"。规则变更记录留档,出问题时回溯最近的改动,多数"突然打不开"都能对上一条最近的规则变更。把端口放行清单截图存档,规则被误删时对照恢复也快;多服务共存时给每条规则写清备注,后来者一眼看懂用途。