想把 www 子域指到 CDN,或者接一个对象存储的访问域名,服务商控制台都会给一句提示:请添加 CNAME 记录指向某某地址。第一次配 cname域名解析的人常在这里犯迷糊,它跟 A 记录到底差在哪?

CNAME 记录做的事

CNAME 叫别名记录,它不直接指向 IP,而是把一个域名指向另一个域名。解析器查到 CNAME 后会拿着目标域名继续查,直到拿到最终的 A 或 AAAA 记录。比如把 www.example.com 用 CNAME 指到服务商给的加速域名,用户访问时先解析到加速域名,再拿到就近节点的 IP。

好处很直接:源站或节点 IP 变了,服务商改自己那条记录就行,你的域名不用动。这也是 CDN、云存储、SaaS 服务商都让用户配 CNAME 的原因。代价是解析多一跳,极端情况下首字节时间会略高一点,一般感知不到。

和 A 记录的区别

  • A 记录:域名直接对应一个 IPv4 地址,查询结果就是 IP。
  • CNAME:域名对应另一个域名,解析链路多一跳,最终仍要落到 A 或 AAAA 记录。
  • 同一个主机名下,CNAME 一般不能和 A、MX 等记录共存,解析库会报冲突。

几个容易踩的坑

裸域(example.com 这种不带 www 的主域)多数 DNS 服务商不允许直接配 CNAME,因为它还挂着 NS、SOA 等记录;部分服务商提供 ANAME 或别名扁平化方案绕开这个限制,用不用看自家控制台的支持情况。

另外生效时间看 TTL,刚改完记录别急着下结论。准备迁移记录的话,可以先把 TTL 调小,切换当天再调回来,能把两边的旧缓存影响压到最小。验证用 nslookup www.你的域名,返回里能看到别名链和最终地址,跟服务商给的提示对得上就配对了。

实际取舍:指向固定服务器用 A 记录省一跳;指向 CDN、云存储这类会动态调度的服务,老老实实用 CNAME,千万别自己手填 IP。