主题
Vercel
把二级域名交给 Vercel 的项目使用。Vercel 的域名管理是"账户级"的,容易走错地方, 所以这里写清楚每个入口在哪。
1. 在 Vercel 项目里加域名
- 打开你的项目 → Settings → Domains;
- 输入完整域名(例如
app.myname.9k.beer)→ Add; - Vercel 可能提示 "需验证所有权 / 需要 TXT 记录"。如果只是加域名, 先按第 2 步做委派,通常委派生效后它自己就认了。
Vercel 的 "External DNS + CNAME" 模式在这里用不了
和 Cloudflare Pages 同理:app.9k.beer 是独立托管的域名,顶点不能加 CNAME (这是 DNS 协议的规定,这样提交会被系统拒绝)。 所以正确做法是把子域名委派给 Vercel 的共享 NS,而不是加 CNAME。
2. 在 Vercel 账户级 Domains 里拿 NS
注意这一步不在项目里:
回到 Vercel 控制台左侧菜单,点账户级的 Domains(不是项目里的那一个);
添加/选中你的域名,页面会给出 4 个名称服务器地址,形如:
textns1.vercel-dns.com ns2.vercel-dns.com ns3.vercel-dns.com ns4.vercel-dns.com
第 1 步的 Settings → Domains 是项目里的入口,这一步是账户级的左侧 Domains 菜单 —— 两个地方长得很像,走错就会一直找不到 NS。
3. 回本平台委派
域名详情页 →「DNS 服务器」→ 把这 4 个 NS 填进去 → 保存。
系统会在父 zone(9k.beer)里写入 app NS ns1.vercel-dns.com 这样的委派记录, 并把本地那份 zone 卸下来 —— 不卸下来的话本地记录会遮挡委派。
用 API 做同一件事:
bash
curl -s -X POST "$API_BASE/api/v1/zones/app.9k.beer/delegate" \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{"nameservers":["ns1.vercel-dns.com","ns2.vercel-dns.com","ns3.vercel-dns.com","ns4.vercel-dns.com"]}'4. 等 Vercel 认可
回 Vercel 看域名状态变 Active(一般几分钟到几十分钟)。之后解析记录在 Vercel 自己的 DNS 面板里管理。
如果 Vercel 坚持要"先验证根域名"
有时它会给一条 TXT 要求你证明所有权。做法是:
- 在 Vercel 里:不需要进入任何项目,点左侧账户级的 Domains, 添加或选中根域名(例如
9k.beer),复制它给出的 TXT; - 在本平台域名详情页点「根域名验证」,选 Vercel,把 TXT 提交上去;
- 回 Vercel 点 Verify。
验证通过后打开 https://app.9k.beer 确认网站能访问。
特别注意
Vercel 对"非公共后缀列表(PSL)里的域名"的子域委派有时会拒绝。遇到 「cannot be used with this account / 不接受该域名」这类提示,那是 Vercel 侧的限制, 和我们这边没关系。可以改用 Cloudflare 或自建解析。
撤回来
在「DNS 服务器」页点「修改 DNS 服务器」→「切换为系统默认DNS地址」 →「保存设置」,系统会删掉委派记录、恢复本地 zone。