给新域名配 DNS。Vercel 文档说”加 A 记录”。YouTube 教程说”用 CNAME”。你在 apex 上试了 CNAME——DNS 提供商拒绝,或者接受了但 MX 记录不工作。这两种记录类型用途有重叠,但有个 RFC 级的约束:CNAME 在同一个 name 上不能跟任何其它记录共存。apex(根)需要其它记录(NS、SOA、MX),所以不能用 CNAME。子域名一般可以。托管平台有精确指令,跟它们的、不要跟通用教程。
常见原因
按命中率从高到低。
1. 在 apex 用 CNAME
DNS 规范(RFC 1912)禁止 zone apex 用 CNAME。提供商拒绝并报 “CNAME conflicts with NS”,或者接受了但 MX 投递失败。
怎么判断:DNS 提供商错误提到 “CNAME and apex”、“CNAME flattening required”,或者根上有 CNAME 且 MX 记录不响应。
2. 跟了两套文档
一套说用 A、一套说 CNAME。你同名都配了。DNS 提供商可能拒绝或静默接受、行为不可预测。
怎么判断:DNS 面板里同一个 name 有两条记录。应该只有一种。
3. 该用 CNAME 时用了 A
某些主机(Vercel www、Netlify)给的 CNAME 目标会解析到负载均衡的 IP。你硬编码 A 记录,主机轮换服务器时你就指向了过期 IP。
怎么判断:主机文档说 “CNAME 到 xxx.vercel-dns.com” 但你设了 A 76.x.x.x。今天可能正常,明天可能挂。
4. 该用 A 时用了 CNAME
Vercel apex 要求 A 76.76.21.21,不是 CNAME。某些平台支持 “ALIAS” 或 “ANAME” 作 apex 上类 CNAME 的选项。DNS 提供商不支持的话只能用 A。
怎么判断:平台不支持 apex CNAME;你在 apex 设了 CNAME;平台拒发 SSL 或显示 “DNS verification failed”。
5. 迁移过程混了记录
换了主机。旧 A 还在、新 CNAME 指向别处。DNS 在两者间轮询或不一致挑选。
怎么判断:同名两条记录指向不同地方。站时新时旧。
6. 用了 ANAME / ALIAS 但 DNS 提供商把它当 CNAME
ANAME 和 ALIAS 是非标准扩展,用来在 apex 做类 CNAME 的事。某些 DNS 提供商实现了,另一些底层把 ANAME 映射成 CNAME 就破坏 MX。
怎么判断:看提供商关于 ANAME 兼容性的文档。测一下加 MX 记录;如果消失或冲突就是 ANAME 实际是 CNAME。
最短修复路径
第 1 步:查你主机平台的要求
去平台文档里找:
| 平台 | Apex | www |
|---|---|---|
| Vercel | A 76.76.21.21 | CNAME cname.vercel-dns.com |
| Netlify | A 75.2.60.5(或支持的 ALIAS) | CNAME yoursite.netlify.app |
| Cloudflare Pages | Cloudflare nameserver + flatten CNAME | CNAME yoursite.pages.dev |
| Firebase Hosting | 控制台给的 A 记录 | 控制台给的 CNAME |
| GitHub Pages | A 185.199.108.153, 109.153, 110.153, 111.153 | CNAME username.github.io |
| AWS S3 | A ALIAS 到 CloudFront/S3 | CNAME 到 CloudFront |
照平台文档的精确值用。
第 2 步:apex 用 A 或 ALIAS/ANAME
DNS 提供商支持 ALIAS/ANAME(Route 53、Cloudflare、DNS Made Easy)就可以在 apex 用它做类 CNAME 行为。否则用 A + IP。
Cloudflare:在 apex 开 “CNAME flattening”。Cloudflare 解析 CNAME 后返回 A 响应。
第 3 步:子域名用 CNAME
www、blog.yourdomain.com、staging.yourdomain.com——都应该 CNAME 到平台目标。
第 4 步:删冲突记录
同名不要 A 和 CNAME 都有。选一个。
第 5 步:验证
dig yourdomain.com # 应显示 A
dig www.yourdomain.com # 应显示 CNAME → ...
类型跟预期不一致就修。
第 6 步:等传播后再验证
改后 15-30 分钟。多 resolver dig。所有都显示新值后浏览器刷新。
预防建议
- 信你主机提供商的文档,不要信通用教程。
- 每个 name 选了什么类型,在 DNS 提供商笔记里记下。
- apex 域名永远用 A 或 ALIAS/ANAME,永远不用 CNAME。
- 同名不要混类型;选一个删冲突。
- 换主机时彻底删旧记录再加新的。
相关阅读
- DNS A vs CNAME 解释
- 域名指向了错的托管商
- 根域名 vs www 混乱
- 同一域名在 Vercel 工作但 Firebase 不行
- 域名连接后站点时而能开时而不能:4 个原因 + 对症修复
- 浏览器 SSL Mixed Content 警告
- MX 记录被覆盖——邮件断了
- RSS / OG URL 仍是占位域名
- 证书被拒:Certificate Transparency 日志不匹配 —— 排查指南
- Cloudflare 橙云灰云搞反,站点立刻挂 —— 排查与修复
- 开启 DNSSEC 后 SERVFAIL:信任链断了 —— 排查与修复
- HSTS preload 进了就出不来:站点被锁死在 HTTPS
- IPv6 用户打不开站点:AAAA 记录缺失或挂了 —— 完整排查
- 子域 NS 委派挂了:缺 Glue 记录 —— 排查与修复
- 证书续签自动化静默挂了,站点现在不受信任 —— 完整修复指南