网站打不开紧急排查:先ping看网络连通再curl看HTTP状态码最后查DNS
网站打不开时,按顺序排查最省时间:先 ping 看网络连通与解析,再 curl 看 HTTP 状态码,最后查 DNS 记录。这三步能把故障定位到本机、服务器还是解析层,比反复重启服务有效得多。
清单第一步之前:先分清"所有人都打不开"还是"只有你打不开"
第一个动作不是敲命令,而是缩小范围。换手机流量(不走同一个 Wi-Fi)访问一次,再找外地朋友或用第三方测站工具从不同节点访问一次。如果别人正常、只有你打不开,问题基本落在本机网络、浏览器缓存或本地 DNS 缓存上;如果所有节点都失败,才进入服务器与解析排查。这一步只要一分钟,却能省掉后面一半的无用操作。
顺带记一下现象:是白屏、报 502、超时转圈,还是浏览器直接提示"无法访问此网站"。不同的提示对应的排查入口不一样,先记下来,后面看状态码时能对上号。
要点一:ping —— 看域名能不能解析、主机能不能到达
ping example.com # Linux / macOS
ping -c 10 example.com # 指定发包数量
ping -n 10 example.com # Windows
结果分三类看:
- 提示
unknown host、Name or service not known或"请求找不到主机",说明卡在解析环节,直接跳到第三条 DNS 检查,后面的步骤不必做。 - 回显里带出 IP、时延正常、丢包为 0%,说明域名能解析、主机可达,继续查 HTTP 层。
- 完全没有回显、持续超时或丢包严重,可能是服务器宕机、防火墙拦截 ICMP,也可能是链路中断。
需要提醒的是,如今多数云服务器和 CDN 默认禁止 ICMP,ping 不通并不等于网站挂了,所以它只做第一层过滤,不能当结论。想进一步区分,可以 ping 一下回显出来的那个 IP,再用 tracert example.com(Windows)或 mtr example.com(Linux、macOS)观察在哪一跳开始丢包:断在本地网关是自家网络问题,断在运营商骨干就不是你能修的,直接报障即可。
要点二:curl —— 拿到 HTTP 状态码,分清服务端还是客户端
ping 能通但网页仍然打不开,就用 curl 直接要一次响应头:
curl -I https://example.com
curl -o /dev/null -s -w "code=%{http_code} time=%{time_total}s\n" https://example.com
curl -v https://example.com
状态码的读法:
- 200、206:服务端返回正常,问题多半在本机浏览器缓存、代理插件或 hosts 文件。
- 301、302 跳到陌生地址:查重定向规则、HTTPS 强制跳转或 CDN 配置。
- 403、401:常见于 WAF 拦截、IP 被封、目录权限错误。
- 404:路径或伪静态规则写错,属于"找不到"而不是"打不开"。
- 500、502、503、504:源站程序异常或网关连不上后端,重点看应用日志、PHP 与数据库进程、后端超时设置。
- 连接被拒绝或长时间超时:端口没有监听,或被安全组、防火墙拦掉。
有两个参数值得记住:curl -4 和 curl -6 分别强制走 IPv4 与 IPv6,可以排查"域名挂了 AAAA 记录但服务器没开 IPv6"这类典型故障;curl -I --resolve example.com:443:1.2.3.4 https://example.com 能绕开 DNS 直接访问源站 IP。如果这样能通、正常访问不通,问题就锁定在解析或 CDN 调度上,而不是服务器本身。
要点三:dig 与 nslookup —— 最后确认解析记录是否正确、是否生效
到这一步还没定位,就把 DNS 查干净:
dig example.com +short
dig example.com NS +short
dig @8.8.8.8 example.com A
dig @1.1.1.1 example.com CNAME
nslookup example.com 8.8.8.8 # Windows 自带
重点核对四件事。第一,本地 DNS 与公共 DNS 的返回结果是否一致,不一致通常是缓存未过期,等 TTL 走完再看。第二,NS 记录是否仍然指向你的服务商,域名是否已过期,过期会直接让解析失效,可以去 WHOIS 查状态和到期时间。第三,CNAME 指向的目标是否还在服务,换主机、换 CDN 时最容易漏改这一条。第四,刚新增或修改的记录是否已经传播,TTL 从几百秒到一天不等。
还有一些"假故障"值得排除:本机 hosts 文件里留着旧的测试记录、公司网络强制走内部 DNS、浏览器开启 DoH 导致解析结果与命令行不同、域名备案被注销导致国内节点被拦。用无痕窗口加公共 DNS 交叉验证一遍,基本能分辨清楚。
要点四:把结果对号入座,决定下一步该找谁
- ping 通、curl 返回 200,但浏览器打不开:清缓存、换浏览器、关代理,问题在你自己这边。
- ping 通、curl 返回 5xx:源站或网关故障,查程序日志与后端进程。
- ping 不通、
curl --resolve却能通:解析或 CDN 层,核对 DNS 记录与回源配置。 - ping 不通、curl 也连不上:服务器、安全组或线路问题,联系主机商。
- ping 直接报找不到主机:纯解析问题,先确认域名是否过期、NS 是否正常。
排查过程中每改一项就重测一次,并记录结果,不要一次动三处,否则恢复正常也不知道是哪一步起了作用。站点长时间打不开会拖累搜索引擎抓取,恢复后建议检查一遍收录情况,确认爬虫能正常回访。