接入 CDN 之后,怎么确认访客走的是哪个节点
知识接了 CDN 之后,「我这里打开的到底是哪个节点、有没有回源」是个高频问题。答案全写在响应头和解析结果里,会看的话不用问服务商。
第一步:确认解析到了 CDN
查域名的 CNAME 记录,指向服务商的加速域名(通常带 cdn、wscdn、cdnhwc 一类的后缀)就说明生效了。还指着源站 IP,那就是 DNS 没切过来或者本地缓存没过期。
要注意各地生效时间不一样。用 全国 DNS 解析分布 看一圈,比在自己机器上 nslookup 一次靠谱得多——新配置的解析常常是先在部分地区生效。
第二步:看命中了哪个节点
CDN 厂商基本都会在响应头里留标记,常见的有这几个:
| 响应头 | 含义 |
|---|---|
X-Cache / X-Cache-Status | HIT 命中缓存,MISS 未命中(这次回源了) |
Age | 该副本在节点上缓存了多少秒,0 基本等于刚回源 |
Via / X-Via | 经过的节点链路,通常能看出节点所在城市 |
X-Served-By / Server | 服务节点标识 |
用 HTTP 响应头查看 或 HTTP 请求测试 就能看到完整的响应头;配合 CDN 识别 可以直接判断用的是哪家服务商。
第三步:判断有没有真的回源
只看一次请求是判断不出来的,因为第一次本来就会 MISS。正确做法是连着请求两次:第一次 MISS、第二次 HIT,说明缓存正常工作;两次都是 MISS,那缓存就没生效,要去查缓存规则。
两次都 MISS 的常见原因:
- 源站响应头带了
Cache-Control: no-store或private,CDN 按规矩不缓存。 - URL 带了随机查询参数(时间戳、埋点 ID),每次都是新 key。
- 响应里有
Set-Cookie,多数 CDN 默认不缓存带 Cookie 的响应。 - 缓存规则只配了静态后缀,而你测的是动态路径。
回源 IP 要单独确认
节点回源走的是哪个 IP、有没有绕远,只看响应头看不出来。想确认得从源站侧看访问日志里的来源 IP 段,或者临时给源站配一个只有 CDN 能解析到的测试域名。
顺带提醒:接了 CDN 之后源站不应该再对公网开放。源站 IP 一旦泄漏,攻击者可以绕过 CDN 直接打源站,前面的防护全白费。检查方法是用 端口扫描 看源站 IP 上还有没有 80/443 开着,用 反向 DNS 查询 和历史解析记录确认源站 IP 有没有被公开暴露过。
多地对照才有意义
CDN 的价值就在于各地就近接入,单点测试完全看不出效果。用 网站测速 跑一遍多节点,各地时延应该明显收敛;如果某个地区仍然很慢,那就是那边没有覆盖节点或者调度出了问题,可以拿着结果找服务商。