说到云服务器,大家都想“云没愁,域名不愁”,但现实往往是:主机开了、实例运行,却呲呲亮着访问不了网页。那究竟是域名没绑好、DNS没同步,还是服务器自个儿“闭眼”了?今天让我们像拆乐高一样,一块块拆开来看,先把问题按因果归类,下一步按操作步骤重来。
先把整个问题拆成三块:①域名解析本身,②服务器网络访问,③应用层检查。每一块都可能藏着小坑,连连看就会一把抓住。咱们先从最常见的域名解析开始,别忘了先把A记录对应到正确的IP。
段落1:域名解析踩坑汇总。大多数人往往在注册域名后,误以为“点一下A记录就足够”,但别忘了云服务器是做动态IP的,或者使用弹性IP。这意味着,你得把A记录对准弹性IP;如果是VPC内的实例,可能还需要开通私网绑定域名功能[1]。还有个高频点是“DNS缓存”。即使你刚修改了记录,外网 DNS 服务器忽略了 1~5分钟的缓存,继续往旧 IP 解析,那你的站点就会闪退。解决办法是把 TTL 调小,或直接刷新本地 DNS 缓存[2][3][4]。
段落2:防火墙与安全组双重排查。云服务器往往默认有安全组规则只开放 22、80、443 等端口。如果你绑定了 CDN 解析,还要确认回源端口是在哪。还有一个细节是“进出方向”。安全组往往给出入口规则,出口默认全开放,但有些云商为了安全,默认关闭出口。那你的网站,外部请求进来,内部处理请求的下一跳就被拒绝了。这种被“拒绝”在日志里往往只显示“003”错误码,最容易被忽略[5][6]。
段落3:物理网络及VPC子网检查。不少新手这阶段就会招架不住——子网的网关出现了“无效子网”状态,一般是子网表配置错了或者实例没有绑定子网。先在控制台检查实例网络字段,在所有子网列表里确认你的实例所在子网有可用路由表、网关。记得有些云商还有“跨子网路由拦截”,一定要把通往 default 路由的 “0.0.0.0/0” 线路打开[7]。这一步,如果不检查会让你怀疑自己是不是搞错了 IP 号。
段落4:系统层面操作检查。会不会是 Iptables 规则硬拦?或者是云厂商未开启 EIP 的 SNAT 功能?一定要登录实例后跑 iptables -L 看看是否有 DROP 或 REJECT 规则。也别忘了 /etc/hosts,本地映射器把域名指向了 127.0.0.1,导致访问全链路被截断[8]。
段落5:应用层探测:Nginx,Apache,Tomcat 共存坑。域名没问题,防火墙没问题,网络通路也通畅,但是如果你用的是 Nginx 前端代理,后端 Web 服务器跑在 127.0.0.1:8080,Nginx 配置里却把 upstream 指向了 127.0.0.1:80,或者根本没有开启 redirloop。或者根本没有写好 server_name 匹配域名。常见错误:return 444