自己做了个站,域名解析改好了,ping 也通,浏览器输 xxx.com 却一直转圈,最后跳到运营商的广告页。换个网络又能打开,人就懵了。

这类问题按层次拆开看,一层层排除,比反复刷新有效得多。

先看解析对不对

cmd 里跑 nslookup xxx.com 8.8.8.8,换成公共 DNS 查一次。返回的 IP 和服务器上的一致,说明解析没问题,毛病在后面;返回 0.0.0.0 或者一串陌生地址,就是解析被改或者本地缓存脏了,ipconfig /flushdns 清一次,再去看路由器的 DNS 设置。

服务器和端口

telnet xxx.com 80 和 telnet xxx.com 443 分别试。80 通、443 超时,说明只开了 HTTP,访问 https 必然卡死。两个都不通,查安全组和系统防火墙,云服务器最常见的是安全组没放行 443。国内服务器还要确认域名有没有备案,未备案的 80 端口会被拦。

被劫持或被改了 hosts

  • hosts 文件:路径在 C:/Windows/System32/drivers/etc/hosts,破解软件常在这里把域名指到 127.0.0.1
  • 运营商劫持:HTTP 页面被插广告或跳转,换 HTTPS 访问能验证,域名上 CDN 也能绕开
  • DNS 污染:换公共 DNS 之后恢复正常,基本就是本地 DNS 被投毒
  • 输入问题:中文输入法下打出全角的点或者空格,地址栏根本不认

证书和浏览器提示

报 NET::ERR_CERT_COMMON_NAME_INVALID,是证书域名和访问的域名不匹配,多域名站点要确认 SAN 列表里有它。报 ERR_CERT_DATE_INVALID,是证书过期或者本机时间错乱,后者最容易被忽略。

本地开发调试时,可以在 hosts 里加一行 127.0.0.1 xxx.com,再在 Nginx 里配一个 server_name,用真域名在本地跑,省得改代码里的域名。