
网站突然打不开时最忌讳的就是一上来重启所有服务。更有效的做法是按顺序排查域名 → 网络 → Nginx → 后端 → 数据库 → 系统资源。这样基本能很快定位问题在哪一层。1. 先确认是不是域名问题先测试域名是否还能正常解析ping example.com或者nslookup example.com如果域名解析到了错误 IP或者根本解析不到就先检查 DNS。如果域名解析正常再直接测试服务器 IP。2. 检查服务器还能不能连接尝试 SSHssh root服务器IP如果 SSH 也连接不上问题可能已经不是网站本身而是服务器宕机 网络故障 安全组限制 防火墙配置错误 云服务器被暂停如果 SSH 正常就继续往下查。3. 检查 80 和 443 端口执行ss -lntp | grep -E 80|443正常情况下应该能看到 Nginx 或其他 Web 服务监听0.0.0.0:80 0.0.0.0:443如果完全没有监听优先检查 Nginx。4. 检查 Nginx 是否正常查看状态systemctl status nginx如果显示failed inactive先检查配置nginx -t配置没问题再启动systemctl restart nginx如果启动失败直接看日志tail -n 100 /var/log/nginx/error.log5. 在服务器本机测试网站可以绕过公网直接访问 Nginxcurl -I http://127.0.0.1如果是多域名服务器可以指定 Hostcurl -I -H Host: example.com http://127.0.0.1如果本机访问正常但公网打不开通常要检查防火墙 安全组 DNS CDN 公网网络6. 出现 502 时检查后端如果页面直接显示502 Bad Gateway通常意味着 Nginx 正常但后端服务挂了。假设后端使用 3000 端口ss -lntp | grep 3000然后测试curl http://127.0.0.1:3000如果连接失败就检查对应服务systemctl status myapp查看日志journalctl -u myapp -n 1007. 检查数据库是否异常有些网站首页能打开但登录、订单、接口全部报错这时候要考虑数据库。例如 MySQLsystemctl status mysql或者systemctl status mariadb如果数据库本身正常还要检查应用日志里有没有Connection refused Too many connections Access denied Connection timeout很多所谓“网站挂了”实际上是数据库连接失败。8. 检查磁盘是不是满了这是非常容易忽略的问题。执行df -h如果看到/dev/sda1 100%说明磁盘已经满了。磁盘满以后可能出现日志无法写入 数据库异常 应用无法创建临时文件 服务启动失败继续检查du -sh /var/log/*很多时候都是日志文件长期没有清理。9. 检查内存和 CPU执行free -h查看内存。再执行top如果某个进程 CPU 长时间 100%或者内存基本耗尽就可能导致网站无响应。还可以检查是否发生 OOMdmesg | grep -i oom如果程序因为内存不足被系统杀掉这里通常能看到记录。10. 查看最近有没有修改配置如果网站之前一直正常刚修改完配置就打不开优先回忆最近做过什么修改 Nginx 更新代码 修改环境变量 升级 Node.js 更新数据库 修改防火墙 更换证书很多故障都和最近一次变更有关。不要一开始就怀疑服务器环境先检查最近改过的东西往往更快。一套常用排查顺序遇到网站打不开我一般依次执行ping 域名ss -lntpsystemctl status nginxnginx -tcurl -I http://127.0.0.1然后再检查systemctl status 后端服务 df -h free -h top如果是 502就重点查后端如果 SSH 都连不上就先查服务器和网络如果本机正常但公网异常就查 DNS、防火墙和 CDN。网站故障看起来复杂但只要按层排查基本都能缩小范围。比起不停重启服务先判断到底是哪一层出了问题通常效率更高。