网站打不开,是每个站长都躲不开的时刻:用户反馈页面空白,自己打开一看,浏览器转了半天最后甩出一行报错。先别急着重启服务器——打不开只是“症状”,病根可能藏在域名、网络、服务器、程序四个层面中的任何一处。这篇文章给出一套从外到内的排查顺序,照着做,大部分故障十分钟内就能定位。
第一步:先圈定故障范围
- 只有自己打不开:多半是本地网络、运营商 DNS 或浏览器缓存问题,用手机流量再试一次即可验证;
- 个别地区打不开:可能是 CDN 节点异常或跨境链路抖动,用全国多地点 ping 工具查看各省份的连通性;
- 所有人都打不开:进入下面的正式排查流程。
第二步:查域名——过期、解析与劫持
- 检查域名是否过期,或因未完成实名认证被注册商停止解析;
- 用 nslookup 你的域名 查询解析结果,IP 是否仍是服务器的公网 IP;如果指向了陌生 IP,可能是被劫持或误操作;
- 刚修改过解析的,受 TTL 缓存影响需要等待生效,着急可以刷新本地 DNS 缓存后再测。
第三步:查网络——端口通不通
先 ping 服务器 IP 确认机器在线。能 ping 通但网站打不开,重点查端口:
- 用 telnet 服务器IP 80 / 443 测试端口,连不上大概率是云安全组或系统防火墙没放行;
- 国内服务器绑定未备案域名时,服务商可能拦截 80/443 端口,这种情况下控制台日志里会有提示;
- 防火墙排查顺序:云平台安全组 → 系统防火墙(firewalld / iptables)→ 应用监听地址是否为 127.0.0.1。
第四步:查服务器——服务、资源与日志
登录 SSH 后按固定顺序检查,别漏项:
- systemctl status nginx 确认 Web 服务是否存活,挂了就 systemctl restart nginx;
- df -h 看磁盘占用,日志写满磁盘导致服务假死是新手站最常见的事故;
- free -m 与 top 看内存和 CPU,内存耗尽触发 OOM 会直接杀掉 Web 进程;
- 读错误日志:/var/log/nginx/error.log 会直接告诉你 Nginx 为什么罢工。
第五步:看状态码,对症下药
- 502 Bad Gateway:后端进程(PHP-FPM、Node)挂掉或超时,重点查后端服务与进程数;
- 503 Service Unavailable:服务过载、重启中或被限流;
- 504 Gateway Timeout:后端处理太慢,数据库慢查询是头号嫌疑;
- 证书告警(NET::ERR_CERT_DATE_INVALID):SSL 证书过期,续期即可,用 Let’s Encrypt 的记得确认自动续期任务还在运行;
- 数据库连接错误:MySQL 挂了或账号配置被改,先重启数据库再看日志定位。
平时做好三件事,故障少一半
- 监控告警:用拨测监控盯住 HTTP 状态码,网站挂了第一时间收到通知,而不是等用户反馈;
- 定期备份:网站文件与数据库异地备份,任何故障都有退路;
- 日志轮转:配置 logrotate,别让日志写满磁盘。
写在最后
网站打不开并不可怕,可怕的是没有思路地乱试。记住“范围 → 域名 → 网络 → 服务器 → 状态码”这条排查链,再配合日志定位,绝大多数故障都能自己解决。