用 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 验证解析与缓存,就完成了一次干净的接入。