网站打不开排查

更新于 2026年7月23日

适用人群:网站突然无法访问、需要系统性定位故障原因的站长/运维

核心概念

排查的分层思路

网站"打不开"背后可能是DNS层、网络层、服务层、证书层中的任意一层出问题,按由外到内的顺序排查效率最高:

  1. DNS层:域名有没有解析到正确的IP
  2. 网络层:端口是否可达,中间有没有被防火墙拦截
  3. 服务层:Web服务(Nginx等)进程是否存活、配置是否正确
  4. 证书层:HTTPS证书是否过期、域名是否匹配

只要按这个顺序一步步排除,就能快速把问题范围收敛到具体一层。

操作步骤

  1. 步骤 1检查DNS解析

    用 dig 域名 A +short 或 /dns 确认域名解析出的IP是否是当前服务器的公网IP,避免解析指向了旧IP或错误IP。

  2. 步骤 2检查端口是否可达

    用 telnet 服务器IP 80/443 或 nc -zv 服务器IP 80 443(也可用 /tools/port)确认端口能否从外部连通。

  3. 步骤 3检查Web服务进程状态

    登录服务器执行 systemctl status nginx 确认进程在运行,必要时看 nginx -t 检查配置有无语法错误。

  4. 步骤 4检查SSL证书状态

    用 /ssl 或 openssl s_client 检查证书是否过期、域名是否与访问域名一致,避免HTTPS单独出故障而HTTP正常掩盖了问题。

  5. 步骤 5检查安全组与系统防火墙

    确认云服务器控制台的安全组规则和系统内的iptables/firewalld/ufw都放行了对应端口,两处都要检查,任一处拦截都会导致连不上。

  6. 步骤 6综合复查

    所有层级确认无误后,用 /site-check 做一次整体检测,确认网站已恢复正常访问。

实际示例

# 1. 检查DNS解析
dig example.com A +short

# 2. 检查端口连通性
telnet 203.0.113.10 443
# 或
nc -zv 203.0.113.10 80 443

# 3. 检查Nginx进程与配置
systemctl status nginx
nginx -t

# 4. 检查证书
openssl s_client -connect example.com:443 -servername example.com </dev/null 2>/dev/null | openssl x509 -noout -dates

# 5. 检查系统防火墙
ufw status
# 或
firewall-cmd --list-all

常见错误

  • ⚠️遇到打不开第一反应就是重启服务器,没有按层排查,问题反复出现
  • ⚠️只检查了云服务器的安全组,忘记服务器系统内部还有一层防火墙(iptables/ufw/firewalld)也可能拦截
  • ⚠️本地DNS缓存还是旧记录,误以为解析没生效,其实是本机/运营商DNS缓存未过期
  • ⚠️只测试了HTTP正常访问,没单独测试HTTPS,遗漏了证书过期导致的单独故障

对应工具

常见问题

网站突然打不开,第一步该查什么?
建议先查DNS解析是否正确指向当前服务器IP,这是最外层也是最容易出问题的一环,排除后再往里层排查端口、服务、证书。
为什么ping能通,网页却打不开?
ping测的是ICMP协议是否通,和HTTP/HTTPS使用的80/443端口是否开放、Web服务是否正常是两回事,需要单独用telnet/nc或 /tools/port 测试对应端口。
DNS已经改了,为什么本地看到的还是老IP?
通常是本地系统或运营商的DNS缓存尚未过期,可以换用 dig @8.8.8.8 域名 等指定公共DNS服务器查询,或换一个网络环境测试。
怎么确认是不是防火墙把请求拦截了?
端口连通性测试(telnet/nc)如果连接被拒绝或超时,同时服务器上服务进程确认在运行,基本可以判断是安全组或系统防火墙规则拦截了请求。

相关教程

官方资料来源