用 CNAME 接入 CDN 与二级域名管理

把子域名用 CNAME 指向 CDN,规划 www/api/img/cdn 等二级域名,并验证解析生效。

当你给站点接入 CDN 时,最常见的动作就是把某个子域名用 CNAME 记录指向 CDN 服务商给的加速域名。本文讲清 CNAME 的用法、根域为什么不能用它,以及二级域名怎么规划。

什么是 CNAME

CNAME(别名记录)把一个域名指向另一个域名,而不是直接指向 IP。浏览器解析时会先查到别名,再顺着别名去查最终的 A/AAAA 记录。这正好适配 CDN:服务商的边缘节点 IP 经常变动,你只要一直指向它给的域名,IP 变化对你透明。

一条典型记录长这样:

cdn.example.com.   CNAME   d1a2b3c4.cdn-provider.net.

根域为什么不能用 CNAME

CNAME 有一条硬规则:同一个名字上不能与其他记录共存。而根域(也叫裸域,如 example.com)天生带着 SOA 和 NS 记录,所以按 DNS 规范根域不能配 CNAME。

替代方案:

  • ALIAS / ANAME:很多 DNS 服务商提供的类 CNAME 记录,可用在根域,对外表现为 A 记录。
  • CNAME flattening:DNS 侧自动把别名解析成 IP 再返回,效果等同 ALIAS。
  • 实在没有上述能力,就用 301 把裸域跳到 www 子域,让子域去接 CDN。

二级域名怎么规划

按用途拆分子域,职责清晰也方便分别接不同后端:

  • www —— 主站页面
  • api —— 接口服务
  • img / static —— 图片、静态资源
  • cdn —— 统一的加速入口

建议只让静态/可缓存的子域走 CDN,api 这类动态接口通常直连源站或走专门的动态加速。

接 CDN 的一般步骤

  • 在 CDN 控制台添加站点,填写要加速的域名(如 cdn.example.com)。
  • 拿到服务商分配的加速域名(形如 xxxx.cdn-provider.net)。
  • 到 DNS 服务商处新增一条 CNAME,把子域指向该加速域名。
  • 按提示配置回源地址、缓存规则和 HTTPS 证书。

验证是否生效

改完解析后等待 TTL 过期,再用命令核对:

dig cdn.example.com CNAME +short
# 或
nslookup -type=cname cdn.example.com

看到返回的是 CDN 的加速域名即说明解析已指过去。再用 curl -I https://cdn.example.com 检查响应头里是否带有 CDN 的缓存标识(如 X-Cache)。

小结

CDN 接入的核心就是一条 CNAME:子域指向服务商的加速域名,IP 变动由服务商兜底。根域受规范限制不能用 CNAME,改用 ALIAS/flattening 或跳转到 www。把二级域名按 www/api/img/cdn 分工规划,接完用 dig 和 curl 验证解析与缓存,就完成了一次干净的接入。