Vercel + 阿里云域名 + Cloudflare:域名解析配置记录

文章发布时间:

最后更新时间:

最近把站点部署到 Vercel,又把在阿里云买的域名接了上去。这个过程里最容易混在一起的不是某个按钮在哪里,而是域名注册商、DNS 服务商、部署平台到底分别管什么。

我这次的场景很常见:

1
2
3
域名:阿里云购买
站点:Vercel 部署
DNS:可以放在阿里云,也可以托管到 Cloudflare

最后能正常访问的状态大概是这样:

先分清三个角色

概念 负责什么 常见例子
域名注册商 购买、续费、实名、所有权管理 阿里云、腾讯云、Namecheap、GoDaddy
DNS 服务商 管理解析记录,把域名指到目标地址 阿里云 DNS、Cloudflare DNS、DNSPod
部署平台 托管网站代码和页面内容 Vercel、Netlify、阿里云 OSS、腾讯云 COS

所以,域名在阿里云购买,不代表网站必须部署在阿里云。常见组合有两种:

1
2
3
阿里云购买域名
阿里云 DNS 管理解析
Vercel 部署站点

或者:

1
2
3
阿里云购买域名
Cloudflare 管理 DNS
Vercel 部署站点

两种都可以,关键是 DNS 记录要配到当前正在生效的 DNS 服务商那里。

A 记录和 CNAME 记录

Vercel 绑定自定义域名时,最常见的是两类记录。

A 记录是把域名指向一个 IP:

1
example.com -> 76.76.21.21

在 DNS 控制台里,根域名一般用 @ 表示:

1
2
3
记录类型:A
主机记录:@
记录值:以 Vercel 项目页面提示为准

CNAME 记录是把一个域名指向另一个域名:

1
www.example.com -> cname.vercel-dns-0.com

在 DNS 控制台里,www 子域名通常这样配:

1
2
3
记录类型:CNAME
主机记录:www
记录值:以 Vercel 项目页面提示为准

这里不要机械照抄网上某个固定值。Vercel 可能会按项目或域名给出不同的推荐记录,最终以 Project -> Settings -> Domains 里的提示为准。

@、www 和子域名

假设域名是:

1
example.com

那么 DNS 控制台里的写法一般是:

写法 对应域名
@ example.com
www www.example.com
blog blog.example.com
api api.example.com

如果只配置了 www,通常只能保证 www.example.com 可访问;如果还想让 example.com 可访问,就要同时配置根域名的记录。

在 Vercel 添加域名

进入 Vercel 项目的域名设置:

1
Project -> Settings -> Domains

添加要绑定的域名,比如:

1
2
example.com
www.example.com

Vercel 会告诉你还缺哪些 DNS 记录。等 DNS 生效后,状态会变成 Valid Configuration。我这里最后同时验证了根域名和 www

在阿里云 DNS 里配置

如果 DNS 还放在阿里云,就进阿里云控制台的域名列表,找到对应域名,点右侧的「解析」。

然后按 Vercel 提示添加记录。常见是:

1
2
3
4
记录类型:A
主机记录:@
记录值:Vercel 给出的根域名记录值
TTL:默认即可

以及:

1
2
3
4
记录类型:CNAME
主机记录:www
记录值:Vercel 给出的 www 记录值
TTL:默认即可

我的配置大概是下面这样,根域名走 A 记录,wwwCNAME

配置完以后不要急着刷新页面判断失败。DNS 记录需要一点传播时间,阿里云控制台、Vercel 后台、本地网络缓存看到的结果可能会有短暂差异。

如果 DNS 托管在 Cloudflare

如果已经把域名的 NS 服务器改到了 Cloudflare,那么阿里云这边主要负责域名所有权和续费,DNS 解析记录就要去 Cloudflare 配。

在 Cloudflare 里需要注意云朵状态:

  • 灰色云朵:DNS only,只做 DNS 解析。
  • 橙色云朵:Proxied,流量会经过 Cloudflare 代理。

排查 Vercel 域名绑定问题时,我更倾向于先用灰色云朵。等 Vercel 显示 Valid Configuration、HTTPS 也正常之后,再决定要不要打开代理。这样问题更容易定位。

国内访问还是可能不稳定

绑定自定义域名只能解决「用自己的域名访问」这件事,它不会把 Vercel 的部署节点变成国内服务器。

所以国内访问可能比直接访问 xxx.vercel.app 好一些,但不能保证稳定。如果站点主要面向国内访问,长期还是要考虑:

1
备案域名 + 国内 CDN + 国内静态托管 / 国内服务器

这次只是先把域名入口打通。后面如果访问速度仍然不理想,再看是否需要把静态站迁到国内托管,或者把国内访问单独做一套线路。