改完一条测试解析,想打开看看效果,浏览器给你一句无法访问此网站,火一下就上来了。很多人第一反应是登服务器看进程、重启服务,折腾半小时回头一查,问题一直在自己电脑上。浏览器打不开自己的网站,最快的排查路径不是猜服务器哪里坏了,而是先把范围缩小:这是你一个人的问题,还是所有人的问题。范围不定下来,你做的每一次操作都等于在黑暗里摸。
一、第一步永远是定性:只有你打不开,还是大家都打不开
拿手机切成移动数据访问一遍,再让外地同事或者在线多地检测看一眼。你这儿不行、别人都正常,问题在本地;到处都不行,才轮到服务器。这一步两分钟,能省掉后面几十分钟的瞎折腾。有个细节必须注意:手机连着同一个 WiFi 不算独立验证,因为它和电脑走的是同一条出口、同一个 DNS,一定要切到流量再试。
二、第二步查自己电脑,三个高频原因
排在最前面的是 hosts 文件。做测试的时候大家习惯把域名写死在 hosts 里指向测试环境,测试完忘了删,从此只有你自己打不开正式站,别人一切正常,而且这个错能藏几个月。第二个是本地 DNS 缓存,解析改过之后本地还抱着旧地址不放,刷新一次就能好。第三个是代理和安全软件,VPN 挂着、代理规则把域名拦了、公司网络策略把某些端口封了,都会让页面出不来,而这一层在浏览器上完全看不出痕迹。
三、第三步用命令行验证,绕开浏览器
浏览器有缓存、有插件、有代理,变量太多。用命令行走一遍,能立刻把浏览器的因素排除掉,也能看清到底是解析不对还是连不上。
下面这条命令绕开浏览器直接请求一次,先把浏览器缓存、插件这些变量排除掉。
:: Windows 自带 curl.exe,先绕开浏览器试一次
curl.exe -v --connect-timeout 8 https://www.example.com/
:: 看解析结果是不是你预期的地址,同时问一次公共 DNS 对照
nslookup www.example.com
nslookup www.example.com 223.5.5.5
:: 刷新本地 DNS 缓存
ipconfig /flushdns
:: 检查 hosts 里有没有被遗忘的测试记录(路径在系统盘下)
findstr /i "example" %SystemRoot%\System32\drivers\etc\hosts
读结果的重点:curl 能把“解析失败、连接超时、证书错误、返回 200 但内容为空”这几种情况分得非常清楚,浏览器却把它们统统显示成一句打不开。nslookup 两次结果如果不一样,答案就锁定了,本地缓存或 hosts 在捣鬼。findstr 如果打出了你的域名,说明 hosts 里确实写死了记录,这就是病根。
四、第四步确认不是自己的事,才动服务器
只有“所有地方都打不开”才值得去看服务器。顺序依然是从外往里:先确认解析(dig +short,问公共 DNS 排除缓存干扰),再确认端口(nc -vz 或 curl 握手),再确认 Web 服务(systemctl is-active nginx),最后在服务器本机上直接请求一次,看服务自己能不能正常响应。
确认问题在服务器侧之后,按从外往里的顺序跑下面这几条,一层层缩小范围。
# 在服务器上自查,确认服务本身是活的
systemctl is-active nginx
curl -s -o /dev/null -w "code=%{http_code}\n" -H 'Host: www.example.com' http://127.0.0.1/
tail -n 30 /var/log/nginx/error.log
服务器本机请求正常、外面访问不了,问题在安全组、防火墙或者 CDN 回源这一段,不用去动程序;本机请求也不正常,才回去查服务。这一步的作用是划清责任线:服务器自己没问题,就别在服务器上改东西,越改越乱。
五、四个最常见的误区
第一个误区是一上来就重启服务器。重启能让一部分问题暂时消失,但会销毁现场,何况很多“打不开”重启根本没用,纯属白折腾还担了风险。
第二个误区是改完 hosts 忘了删。表现极具迷惑性:同事都能打开,只有你不能,于是你认定是服务器对你这边不稳,查了半天服务器。以后再动 hosts,改完立刻注释掉原文并在日历上设个提醒。
第三个误区是只看 ping。ping 通只能说明主机可达,跟网站能不能开是两回事——Web 服务挂了照样 ping 得通;反过来服务器禁 ICMP 时 ping 不通,网站却好好的。
第四个误区是把自己一个人打不开当成线上故障,急着回滚代码。回滚也是个变更动作,本身有风险,为了一个不存在的问题去回滚,等于把真实问题引进来。
六、恢复之后怎么确认
清掉本地缓存、换一个网络、换一个浏览器,三个动作各访问一次;再从外部用多地检测看一遍;最后回到服务器日志,确认外部的请求确实打到了你这里。三条都对上,才算真的恢复。只看自己刷新出来一次就收工,很可能只是本地缓存恰好过期了。
浏览器打不开自己的网站,考验的不是技术深度,而是排查顺序。先定性、再缩小范围、最后才动手,顺序对了大部分情况几分钟就出结论。顺序错了,一晚上的时间全花在一个跟你无关的方向上。
相关阅读:
申请创业报道,分享创业好点子。点击此处,共同探讨创业新机遇!
