阿里云 ESA + Pages 域名部分电脑无法访问

阿里云 ESA + Pages 域名部分电脑无法访问

最近使用阿里云 ESA + Pages 部署了一个网站,绑定的域名是 www.exmaple.com。

部署完成后,发现一个奇怪的问题:其他电脑可以正常打开网站,但我的 Windows 电脑始终无法访问。

起初怀疑是 ESA 配置、Pages 部署或者 HTTPS 证书出了问题。但既然其他电脑可以访问,就说明网站并非完全不可用。

于是从本机 DNS 开始排查。最终发现,域名的新旧权威 DNS 记录不一致。部分公共 DNS 仍返回旧 NS,导致不同电脑出现不同的访问结果。

这篇文章记录整个排查过程、使用的命令和修复思路。

解决方案

1. 检查本机 DNS 解析

首先在 Windows PowerShell 中执行:

powershell 复制代码
nslookup www.exmaple.com

得到结果:

text 复制代码
服务器:  UnKnown
Address:  10.255.148.69

*** UnKnown 找不到 www.exmaple.com:
Non-existent domain

这里有两个重要信息:

  • 10.255.148.69:当前电脑使用的 DNS 服务器,属于私有 IP 地址。
  • Non-existent domain:DNS 返回 NXDOMAIN,表示该解析器认为域名不存在。

这说明浏览器还没走到 HTTPS 请求阶段,就已经卡在域名解析上。

但此时不能断定域名真的不存在,也可能是本机 DNS 或上游解析器缓存了错误结果。

2. 使用不同公共 DNS 进行对比

为了排除本机 DNS 的影响,分别指定阿里云公共 DNS 和 Cloudflare DNS 查询。

powershell 复制代码
nslookup www.exmaple.com 223.5.5.5

nslookup www.exmaple.com 1.1.1.1

阿里云公共 DNS 返回:

text 复制代码
服务器:  public1.alidns.com
Address:  223.5.5.5

*** public1.alidns.com 找不到
www.exmaple.com: Non-existent domain

Cloudflare DNS 返回:

text 复制代码
服务器:  one.one.one.one
Address:  1.1.1.1

非权威应答:
名称: www.exmaple.com
Addresses:
  120.222.219.13
  124.160.144.202

两个公共 DNS 出现了不同结果。

继续使用 Google DNS:

powershell 复制代码
nslookup www.exmaple.com 8.8.8.8

返回:

text 复制代码
服务器: dns.google
Address: 8.8.8.8

非权威应答:
名称: www.exmaple.com
Addresses:
  117.160.121.67
  111.170.29.45
  36.158.219.8
  111.48.30.45
  111.48.33.36
  36.158.222.14

整理结果:

DNS 服务器 查询结果
本机 DNS 10.255.148.69 NXDOMAIN
阿里云 DNS 223.5.5.5 NXDOMAIN
Cloudflare DNS 1.1.1.1 正常返回 IP
Google DNS 8.8.8.8 正常返回 IP

不同 DNS 服务器返回不同节点 IP,本身未必是问题。ESA 采用边缘节点调度,不同地区、不同 DNS 解析器可能获得不同地址。

真正需要关注的是:部分 DNS 返回 NXDOMAIN,而其他 DNS 能正常解析。

这时,排查重点从 Pages 部署转向 DNS 委派和解析缓存。

3. 绕过 DNS 验证 ESA 是否正常

接下来需要确认:网站本身能不能访问?

使用 curl 的 --resolve 参数,指定之前解析成功的 IP 地址:

powershell 复制代码
curl.exe -I -v `
  --resolve www.exmaple.com:443:120.222.219.13 `
  https://www.exmaple.com/

这里使用 PowerShell 的反引号换行,也可以写成一行。

--resolve 的作用是临时指定域名对应的 IP,绕过系统 DNS,同时保留 HTTPS 请求中的域名信息。

关键输出:

text 复制代码
* Host www.exmaple.com:443 was resolved.
* IPv4: 120.222.219.13
* Trying 120.222.219.13:443...
* Established connection to www.exmaple.com
* Request completely sent off

< HTTP/1.1 200 OK
< Server: ESA
< Content-Type: text/html
< Content-Length: 810
< X-Site-Cache-Status: HIT

可以确认:

  1. 本机可以连接 ESA 节点的 443 端口。
  2. HTTPS 握手成功。
  3. ESA 返回 200 OK。
  4. 该请求命中了 ESA 缓存。

这表明测试的 ESA 节点能够正常响应请求。

因此,不必急着重新部署 Pages,也没有证据表明需要重置 HTTPS 证书。

需要注意,curl -I 发出的是 HEAD 请求。它能验证 HTTP 响应状态,但不能保证页面中的 JavaScript、CSS 和接口请求都正常。

4. 检查域名 NS 是否一致

既然 ESA 能返回页面,就继续检查 DNS。

执行:

powershell 复制代码
nslookup -type=NS exmaple.com 1.1.1.1

nslookup -type=NS exmaple.com 223.5.5.5

Cloudflare 返回:

text 复制代码
exmaple.com nameserver =
  rainier.ns.atrustdns.com

exmaple.com nameserver =
  red-sea.ns.atrustdns.com

阿里云公共 DNS 返回:

text 复制代码
exmaple.com nameserver =
  dns22.hichina.com

exmaple.com nameserver =
  dns21.hichina.com

这就是排查过程中的关键线索。

同一个域名,不同递归 DNS 返回了两组 NS:

DNS 返回的 NS
Cloudflare atrustdns.com
阿里云公共 DNS hichina.com

这通常意味着域名发生过 DNS 服务迁移,部分递归解析器仍保留旧的委派信息。

但递归 DNS 返回的 NS 不一定代表注册局当前实际委派的 NS。

还需要直接查询 .com 顶级域名服务器。

5. 查询注册局实际委派的 NS

执行:

powershell 复制代码
nslookup -type=NS exmaple.com a.gtld-servers.net

关键结果:

text 复制代码
exmaple.com nameserver =
  rainier.ns.atrustdns.com

exmaple.com nameserver =
  red-sea.ns.atrustdns.com

这一步确认:.com 顶级域名服务器已经将 exmaple.com 委派给 atrustdns.com 的两台 NS。

因此,atrustdns.com 是当前注册局委派的 DNS 服务。

阿里云公共 DNS 返回的 hichina.com 与当前委派不一致。

6. 直接查询新旧权威 DNS

为了验证两组 DNS 的实际记录,分别执行:

powershell 复制代码
nslookup -type=A www.exmaple.com rainier.ns.atrustdns.com

nslookup -type=A www.exmaple.com dns21.hichina.com

新权威 DNS 返回:

text 复制代码
服务器: UnKnown
Address: 8.148.39.173

名称: www.exmaple.com
Addresses:
  36.158.219.10
  111.48.33.36
  117.160.121.66
  111.48.30.45
  36.158.222.14
  111.170.29.46

旧 DNS 返回:

text 复制代码
服务器: UnKnown
Address: 47.118.199.200

*** UnKnown 找不到 www.exmaple.com:
Non-existent domain

至此,可以确定三个事实:

  • 注册局已将域名委派给 atrustdns.com。
  • 新权威 DNS 存在 www.exmaple.com 的 A 记录。
  • 旧的 hichina.com DNS 对该域名返回 NXDOMAIN。

同时,阿里云公共 DNS 仍返回旧 NS,并且无法解析 www。

故障集中在 DNS 委派信息和解析结果不一致,而不是这次测试的 ESA HTTPS 链路。

不过,是否由阿里云公共 DNS 的旧委派缓存直接造成 NXDOMAIN,仍需要结合缓存 TTL、完整递归过程或 DNS 服务商日志确认。

7. 临时恢复本机访问

如果只是想让故障电脑先打开网站,可以使用两种方法。

方法一:更换 DNS

如果电脑处于普通家庭网络,可以尝试将网卡 DNS 设置为:

text 复制代码
首选 DNS:1.1.1.1
备用 DNS:8.8.8.8

Windows 操作路径:

  1. 打开「设置」。
  2. 进入「网络和 Internet」。
  3. 找到当前使用的 Wi-Fi 或以太网。
  4. 打开 DNS 服务器分配设置。
  5. 改为手动 IPv4 DNS。
  6. 填入上述地址并保存。

随后在 PowerShell 中执行:

powershell 复制代码
ipconfig /flushdns

再检查:

powershell 复制代码
nslookup www.exmaple.com

如果 DNS 正常返回 IP,再打开浏览器测试。

注意:如果电脑连接公司网络、VPN 或内部 DNS,修改网卡 DNS 可能影响内部系统访问。此时应先确认 10.255.148.69 的来源。

方法二:临时修改 hosts

如果不希望修改 DNS 服务器,也可以临时为该域名指定一个已经验证可用的 ESA IP。

以管理员身份运行记事本,打开:

text 复制代码
C:\Windows\System32\drivers\etc\hosts

在文件末尾添加:

text 复制代码
120.222.219.13 www.exmaple.com

保存文件。

然后执行:

powershell 复制代码
ipconfig /flushdns

重新打开浏览器,访问:

text 复制代码
https://www.exmaple.com

需要注意:

  • hosts 文件只能绕过系统 DNS,不能修复公网 DNS。
  • nslookup 通常直接查询 DNS,不用于验证 hosts 是否生效。
  • ESA 节点 IP 可能随调度策略变化。
  • 测试结束后应删除这条 hosts 记录。

这只能作为临时处理手段,不适合作为长期配置。

8. 从根本上修复 DNS

正式修复需要确保域名注册局、当前权威 DNS 和递归解析器看到一致的结果。

第一步:核对域名注册商 NS

确认域名当前使用:

text 复制代码
rainier.ns.atrustdns.com
red-sea.ns.atrustdns.com

具体值应以当前 ESA 控制台分配的 NS 和注册局实际委派为准。

不要在没有确认之前反复切换 NS。

第二步:检查 ESA DNS 记录

进入阿里云 ESA 控制台,打开对应站点的 DNS 记录管理。

确认:

  • www 记录存在。
  • Pages 项目已经绑定 www.exmaple.com。
  • 没有指向旧服务的错误记录。
  • 站点接入状态正常。

记录类型及目标值应以 ESA Pages 当前给出的域名绑定要求为准,不要将前面查询到的边缘节点 IP 直接填成固定 A 记录。

第三步:检查 DNS 缓存与传播

如果最近刚切换 NS,可以观察递归 DNS 是否逐步更新。

继续执行:

powershell 复制代码
nslookup -type=NS exmaple.com 223.5.5.5

nslookup www.exmaple.com 223.5.5.5

nslookup -type=NS exmaple.com 223.6.6.6

nslookup www.exmaple.com 223.6.6.6

当解析器不再返回旧 NS,且能够获得正确的解析结果时,再重新测试网站。

如果 NS 切换已经过去数天,部分公共 DNS 仍持续返回旧记录或 NXDOMAIN,就应该联系对应 DNS 服务商,提交完整查询结果,检查缓存和解析策略。

排查命令汇总

下面是本次用到的核心命令,可以保存备用。

powershell 复制代码
# 1. 检查本机 DNS
nslookup www.exmaple.com

# 2. 检查公共 DNS
nslookup www.exmaple.com 223.5.5.5
nslookup www.exmaple.com 1.1.1.1
nslookup www.exmaple.com 8.8.8.8

# 3. 查询不同递归 DNS 返回的 NS
nslookup -type=NS exmaple.com 1.1.1.1
nslookup -type=NS exmaple.com 223.5.5.5

# 4. 查询注册局委派
nslookup -type=NS exmaple.com a.gtld-servers.net

# 5. 查询当前权威 DNS
nslookup -type=A www.exmaple.com rainier.ns.atrustdns.com

# 6. 查询旧 DNS
nslookup -type=A www.exmaple.com dns21.hichina.com

# 7. 清理本机 DNS 缓存
ipconfig /flushdns

# 8. 绕过 DNS 验证 ESA HTTPS
curl.exe -I -v --resolve www.exmaple.com:443:120.222.219.13 https://www.exmaple.com/
相关推荐
Lank_M6 小时前
canvas 第一次画字没用上字体,字体却是它要来的
前端
古夕6 小时前
iframe 授权失败时露出 60000 JSON 的复盘
前端·javascript
古夕6 小时前
地址变了,页面是空的:一次 Vue Router 菜单切换复盘
前端·vue.js
JavaGuide6 小时前
推荐一个好用 DeepSeek Harness 插件,直接把 Agent 上下文给可视化了!
前端·后端
数据掘金6 小时前
白屏故障定位:从资源请求到路由渲染的排查顺序
前端
程序员Sunday6 小时前
ES Module 和 CommonJS 有什么区别?循环依赖时会发生什么?
前端·javascript·面试
玲珑意6 小时前
Vue 3 + DAG拓扑排序 + SSE流式人机协同:现代AI工作流编排系统的工程化实践
前端
三十而立洋6 小时前
TypeScript 7.0 深度解析:新特性、Go 原生编译器及与 TypeScript 6.0 的区别
前端·typescript·前端工程化
编程之道6 小时前
从VUE2到VUE3学习过程遇到的一些困惑
前端