CNAME 是什么?一文搞懂 CDN 域名解析原理
在配置 CDN、对象存储、自定义域名时,我们经常会看到一个配置项:CNAME。
比如 CDN 控制台可能会让你添加一条解析记录:
很多人第一次看到会疑惑:
CNAME 是不是跳转?为什么配置了 CNAME,浏览器地址栏没有变?它和 A 记录有什么区别?
这篇文章就把 CNAME 讲清楚。
一、CNAME 是什么?
CNAME 的全称是 Canonical Name Record,中文一般叫别名记录。
它的作用很简单:把一个域名指向另一个域名。
比如:
意思是:
当用户查询
www.example.com时,不直接返回 IP,而是告诉 DNS:这个域名的别名是xxx.cdn.com,你继续去查它。
所以 CNAME 本质上不是“跳转”,而是 DNS 层面的别名关系。
二、CNAME 的解析流程
假设你配置了:
用户访问:
https://www.example.com
大概流程如下:
浏览器向 DNS 查询
www.example.com。DNS 发现它不是 A 记录,而是 CNAME。
DNS 返回:
www.example.com的别名是www.example.com.edgeonecdn.com。继续查询这个 CDN 域名对应的 A / AAAA 记录。
DNS 返回一个合适的 CDN 节点 IP。
浏览器连接 CDN 节点。
CDN 如果有缓存,就直接返回内容;如果没有缓存,就回源到你的服务器。
也就是说,最终用户连接的不是你的源站 IP,而是 CDN 节点 IP。
三、为什么 CDN 常用 CNAME?
因为 CDN 的核心能力就是智能调度。
如果你直接把域名 A 记录写死到某个 IP:
那么所有用户都会访问这个固定 IP。
但 CDN 不一样,它希望根据用户所在地区、运营商、网络质量、节点负载,动态返回不同节点。
比如:
所以 CDN 厂商通常会给你一个 CNAME 地址,让你的业务域名指向它。
这样 CDN 厂商就可以在它自己的 DNS 系统里做智能调度。
四、CNAME 和 A 记录有什么区别?
简单理解:
A 记录:直接告诉你门牌号。
CNAME:告诉你这个名字其实是另一个名字,再去查那个名字的门牌号。
五、CNAME 不是 301/302 重定向
这是最容易搞混的地方。
CNAME 是 DNS 层面的事情,发生在浏览器真正请求网站之前。
301/302 是 HTTP 层面的事情,发生在浏览器已经访问服务器之后。
比如你配置:
用户浏览器地址栏仍然显示:
https://www.example.com
不会变成:
https://xxx.cdn.com
但如果你配置的是 301 重定向:
https://www.example.com -> https://example.com
那么浏览器地址栏会真的变成:
https://example.com
所以:
六、结合 CDN 的完整访问链路
以 EdgeOne、阿里云 CDN、腾讯云 CDN 这类产品为例,配置完成后通常是这样:
用户访问时看到的是:
www.example.com
但实际链路是:
用户浏览器 → DNS → CDN 节点 → 源站服务器
这也是 CDN 能隐藏源站 IP、提升访问速度、减少源站压力的原因。
七、根域名能不能配置 CNAME?
这里要注意一个常见问题:
很多 DNS 服务商不允许根域名直接配置 CNAME。
比如:
example.com
这个叫根域名,也常用 @ 表示。
传统 DNS 规范里,根域名通常还需要配置 NS、SOA、MX 等记录。如果直接配置 CNAME,可能会和这些记录冲突。
所以很多平台会提供类似能力:
如果你的 CDN 支持根域名接入,它通常会在后台帮你处理这个问题。
八、配置 CNAME 时要注意什么?
不要同时给同一个主机记录配置 CNAME 和 A 记录。
比如www已经是 CNAME,就不要再给www配 A 记录。CNAME 只负责解析,不负责 HTTPS 证书。
如果你访问的是https://www.example.com,CDN 边缘证书仍然要覆盖www.example.com。CNAME 不等于隐藏所有信息。
它可以让用户访问 CDN 节点,但如果源站 IP 在其他地方暴露,仍然可能被直接访问。CNAME 不会自动做
www到根域名的跳转。
如果你想让www.example.com跳到example.com,需要配置 301/302 重定向。修改 CNAME 后不会全球立刻生效。
DNS 有 TTL 缓存,可能需要几分钟到数小时。
九、一个实际例子
假设你的网站是:
lautung.com
你想让:
www.lautung.com
接入 EdgeOne CDN,那么可能会配置:
如果你希望最终统一访问根域名:
https://lautung.com
还需要在 CDN 或 Nginx 配置:
这里 CNAME 和 301 是两个不同动作:
CNAME:让
www.lautung.com先接入 CDN。301:让浏览器从
www.lautung.com跳到lautung.com。
十、总结
CNAME 可以理解为 DNS 世界里的“别名”。
它的核心作用是:
让一个域名指向另一个域名,再由另一个域名继续解析到最终 IP。
在 CDN 场景里,CNAME 非常重要,因为它让 CDN 厂商可以接管调度能力,根据用户位置和网络情况返回最合适的节点。
最后记住三句话:
CNAME 是 DNS 层别名,不是网页跳转。
CNAME 不会改变浏览器地址栏。
CDN 使用 CNAME,是为了动态调度到最合适的边缘节点。
CNAME 是什么?一文搞懂 CDN 域名解析原理
https://lautung.com/archives/Dtkg6JKE
评论