Compare Memo

Vercel 域名绑定:CNAME vs A(为什么 diary 用 CNAME)

2026-01-22 · Zon · diary.zondev.top → Vercel

把记录类型选对,减少验证与运维摩擦

解释 CNAME 与 A 记录在 Vercel 场景下的差异、适用边界,以及为什么对 diary.zondev.top 我更推荐 CNAME diary → cname.vercel-dns.com(A 记录是可行备选)。


TL;DR

  • diary.zondev.top 这种子域名:优先用 CNAMEcname.vercel-dns.com(更“语义正确”,也更灵活)。
  • A76.76.21.21 也能用(Vercel 的 Anycast IP),但本质是“把解析钉死到一个 IP”。
  • 两者不要同时配;尤其不要同时存在 CNAME + A/AAAA(会导致验证/解析冲突)。
  • 如果你用 Cloudflare 等代理(橙云):先切到 DNS only(灰云)完成 Vercel 验证,再决定是否打开代理。

区别速查

CNAME · Alias 到 Vercel

diarycname.vercel-dns.com

  • 最适合:子域名(xxx.zondev.top
  • 优点:Vercel 可在后台调整解析目标;你无需跟着改 IP
  • 限制:同名不能再挂其它记录(同名 TXT/MX/AAAA 等都不行)
  • 代价:DNS 解析多一跳(通常可忽略)

A · 直指 Vercel IP

diary76.76.21.21

  • 最适合:根域(apex)或你的 DNS 不方便配 CNAME 时
  • 优点:解析路径更直接;可与 TXT 等同名记录并存
  • 限制:理论上是“固定到 IP”(Vercel IP 极稳定,但仍是硬编码)
  • 注意:不要同时存在 AAAA 指向其它目标

一张表讲清楚

维度 CNAME diary → cname.vercel-dns.com A diary → 76.76.21.21
语义 “别名”到 Vercel(更贴近 DNS 设计初衷) “地址”直达 IP(更硬、更直接)
子域名 ✅ 推荐 ✅ 可行
根域(apex) ❌ 传统 DNS 不允许(除非提供商做 CNAME flattening) ✅ 常用
同名记录共存 ❌(CNAME 与任何同名记录互斥) ✅(可与 TXT 等同名共存,避免冲突即可)
运维/迁移 更省心:Vercel 可调整目标,你不跟随改 IP 稳定但更“钉死”:你显式维护 IP

为什么这次我写 CNAME

你的关键变量

  • 你绑定的是 diary.zondev.top —— 它是子域名,最标准的做法就是 CNAME。
  • Vercel 对子域名的“官方惯用入口”就是 cname.vercel-dns.com;让平台保留更多后端调整空间。
  • vercel-ship 里出现 A 记录并不矛盾:它的设计就是“以 Vercel inspect 输出为准”,而 Vercel 在不同域名形态/提供商下可能给出 CNAME 或 A 两种可行配置。

图解:解析路径与体验差异

CNAME diary.zondev.top CNAME → cname.vercel-dns.com cname.vercel-dns.com A/AAAA → Vercel edge Vercel Edge TLS · CDN · routing A diary.zondev.top A → 76.76.21.21 76.76.21.21 Anycast entry for Vercel Vercel Edge same destination
两种记录最终都把流量引到 Vercel;差别在于“你是 alias 到 Vercel(CNAME)”,还是“你自己维护一个 IP 入口(A)”。

CNAME 体感评分(越高越好)

子域名适配
98
运维省心
92
解析简洁
78
根域适配
5

A 体感评分(越高越好)

子域名适配
88
运维省心
82
解析简洁
92
根域适配
96

常见坑(导致 “Invalid Configuration” 的 Top 4)

  1. 同名冲突diary 同时存在 CNAME 和 A/AAAA,或指向不同目标(Vercel 会判定配置不一致)。
  2. Cloudflare 代理:橙云会把权威解析“遮住”,Vercel 可能看不到你配置的 CNAME/A。先灰云验证,再按需开代理。
  3. TTL/生效延迟:改完 DNS 后几分钟到数小时都可能;先别反复改来改去。
  4. 误把根域当子域zondev.top(apex)与 diary.zondev.top(subdomain)是两套规则。

Sources(未在线核验)

Closing Summary

你现在的场景(diary.zondev.top)用 CNAME 是最“标准且省心”的默认值;如果你更希望“直指一个入口”,也可以用 A76.76.21.21。关键是:只选一种,并确保 Cloudflare 代理不干扰验证。

One next action:在 DNS 服务商里先配 CNAME diary → cname.vercel-dns.com(或备选 A diary → 76.76.21.21),并保持 DNS only,等待 Vercel 变为 Verified。

对子域名:优先 CNAME;对根域:用 A/ALIAS。
— Practical DNS rule for Vercel