帮助中心 / 网络与安全防护 / 网站突然无法访问?从DNS到服务器的完整诊断流程

网站突然无法访问?从DNS到服务器的完整诊断流程

更新时间:2026-04-17 预计阅读:7 分钟

网站突然无法访问是最紧急的线上故障之一。用户看到的是空白页或错误页,你看到的是监控告警,而根因可能在完全不同的层次——DNS 未生效、CDN 故障、服务器宕机、Nginx 崩溃、数据库挂掉,或者只是磁盘满了。

本文提供一套系统化的诊断流程,帮你在最短时间内定位根因并恢复服务。


一、故障快速分类

首先判断故障范围:

# 在多个地区测试网站是否可访问
# 工具:https://www.isitdownrightnow.com/
# 或使用命令行:
curl -I --connect-timeout 10 https://your-domain.com
现象 可能原因 优先排查
全球都无法访问 服务器宕机、DNS 故障、域名过期 服务器状态 → DNS
国内无法访问,海外正常 CDN 回源问题、线路故障 CDN 状态 → 线路
部分页面报错,首页正常 特定功能依赖的服务(数据库、缓存)故障 数据库 → Redis
网站响应极慢但未完全宕机 CPU/内存耗尽、数据库慢查询 服务器资源使用率

二、第一步:检查 DNS 解析

# 检查域名是否正确解析到服务器 IP
nslookup your-domain.com
dig your-domain.com +short

# 检查 DNS 是否在全球范围内生效
# 工具:https://www.whatsmydns.net/

如果 DNS 解析结果不是你的服务器 IP,可能原因:

  • 域名 DNS 记录被误删或修改
  • 域名已到期被注销
  • DNS 服务商故障
  • 使用 CDN 时回源配置变更

域名是否过期

# 查看域名 Whois 信息,确认到期日期
whois your-domain.com | grep -i "expir"

三、第二步:确认服务器是否可达

# ping 服务器 IP(注意:部分服务器禁用 ICMP,ping 不通不一定表示宕机)
ping your_server_ip

# 测试 HTTP/HTTPS 端口是否开放
curl -I --connect-timeout 5 http://your_server_ip
telnet your_server_ip 80
telnet your_server_ip 443

如果服务器 IP 完全无响应,登录 VPS 控制面板检查服务器运行状态,必要时强制重启。


四、第三步:SSH 登录检查各项服务

能 SSH 登录后,按以下顺序检查:

检查系统资源是否耗尽

# 查看 CPU、内存、负载
top -bn1 | head -20

# 查看磁盘是否满了(这是最常见的原因之一)
df -h

# 查看内存使用
free -h

检查 Nginx 状态

# 查看 Nginx 是否在运行
sudo systemctl status nginx

# 查看 Nginx 错误日志(最近 50 行)
sudo tail -n 50 /var/log/nginx/error.log

# 测试 Nginx 配置并重载
sudo nginx -t && sudo systemctl reload nginx

检查 PHP-FPM 状态(WordPress 等 PHP 站点)

sudo systemctl status php8.1-fpm
sudo tail -n 30 /var/log/php8.1-fpm.log

检查 MySQL 状态

sudo systemctl status mysql
sudo tail -n 30 /var/log/mysql/error.log

# 尝试连接数据库
mysql -u root -p -e "SELECT 1;"

检查端口监听状态

# 确认 80 和 443 端口正在监听
sudo ss -tlnp | grep -E ':80|:443'

五、第四步:CDN 相关排查

如果使用了 Cloudflare 或其他 CDN:

# 直接访问源站 IP(绕过 CDN)
curl -H "Host: your-domain.com" http://your_server_ip

# 如果直接访问 IP 正常,但通过域名访问不正常
# 说明问题在 CDN 层,登录 Cloudflare 控制台检查

Cloudflare 常见问题:

  • SSL/TLS 加密模式设置错误(建议选”完全(严格)”)
  • 防火墙规则误拦截
  • 回源 IP 被服务器防火墙拦截(确认放行 Cloudflare IP 段)

六、常见故障快速恢复命令

# Nginx 崩溃 → 重启
sudo systemctl restart nginx

# MySQL 崩溃 → 重启
sudo systemctl restart mysql

# PHP-FPM 崩溃 → 重启
sudo systemctl restart php8.1-fpm

# 磁盘满了 → 快速清理
sudo journalctl --vacuum-time=7d
sudo apt clean
docker system prune -f  # 如果有 Docker

# 内存耗尽 → 找出占用最高的进程并重启
ps aux --sort=-%mem | head -10

七、建立监控避免下次被动发现

网站宕机最好的处理是在用户发现之前你就已经收到告警。推荐以下免费监控方案:

  • UptimeRobot:免费监控 50 个站点,每 5 分钟检测一次,宕机立即发邮件/Telegram 通知
  • Betterstack:免费版提供 3 分钟检测间隔,支持多渠道告警
  • 自建监控:用 crontab 每分钟 curl 检测,失败时发送通知(参见方向十进阶运维篇)

总结

网站无法访问的排查顺序:DNS 是否正常解析 → 服务器是否可达 → 系统资源是否耗尽(磁盘/内存/CPU)→ Web 服务是否运行 → 数据库是否运行 → CDN 配置是否正确。按这个顺序依次检查,90% 的网站宕机故障可以在 15 分钟内定位并恢复。

这篇文章对您有帮助吗?
联系销售