“域名已经指向服务器了,怎么还是打不开?”这个问题看起来只有一句,实际上跨过了几层不同的系统。把它们混在一起,很容易改完 DNS 又改证书,最后连最初的问题都找不到。
解析只是第一步
DNS 负责把名字映射到地址。A 记录返回 IPv4 地址,AAAA 记录返回 IPv6 地址。它并不检查服务器里有没有网站,也不负责替应用启动进程。
在 Windows 上可以先查:
Resolve-DnsName www.example.com -Type A
这里需要关心两件事:结果是不是预期地址,以及有没有一条不再使用的 AAAA 记录。如果客户端优先访问 IPv6,而 IPv6 的网站入口没有配置好,可能出现有些设备能开、有些不能开的现象。
接下来才是连接
拿到 IP 后,浏览器还要建立网络连接。HTTPS 通常使用 TCP 443,HTTP 通常使用 TCP 80。服务器上的进程监听、操作系统防火墙、云平台防火墙,都可能影响连接。
ss -lntp
curl -I --connect-timeout 5 https://www.example.com/
ss 告诉你谁在本机监听,curl 则从发起请求的一侧观察结果。只在服务器自己访问成功,不能证明公网入口正常。最好再用手机网络或另一台机器验证。
HTTPS 还多一层证书
连接成功后,浏览器会检查证书是否可信、是否过期,以及证书是否覆盖访问的域名。example.com 和 www.example.com 是不同的主机名,证书需要包含实际使用的名字。
不要把忽略证书验证当作修复方法。它只能帮助区分问题在哪一层,不能让证书本身变得正确。
最后才到网站
同一个 IP 可以运行多个网站。Nginx 会根据域名选择对应的站点配置;如果没有匹配,可能出现默认页、404,或者另一个站点。此时继续修改 DNS,通常已经偏离了问题。
比较实用的排查顺序是:查解析 → 查端口连接 → 查证书 → 查站点路由 → 查应用日志。每一步只验证一件事,结果记录下来。遇到相似的问题时,能更快知道从哪一层开始。