发布于 2026-10-22 · 最后核实:2026-10-22 · 文中价格与额度以各官网为准
很多人第一次绑定域名都会卡在同一个地方:托管平台让你「添加一条 A 记录」或者「把 CNAME 指向某某地址」,然后网站要么打不开,要么显示证书错误,要么带 www 能开、不带 www 打不开。
这些问题其实都出在 DNS 这一层。好消息是,一个人做网站需要懂的 DNS 知识非常有限,理解三件事就够了:解析是怎么发生的、几种常用记录分别干什么、www 和 HTTPS 怎么配。
DNS 在做什么
浏览器访问网站,最终要知道的是服务器的 IP 地址。DNS(域名系统)的工作,就是把人记得住的域名翻译成机器用的 IP 地址,常被比作「互联网的电话簿」。
一次完整的查询大致是这样走的:
- 你在浏览器里输入
example.com,请求先发给一个递归解析服务器(通常是运营商或公共 DNS 提供的)。 - 递归解析器去问根服务器:
.com归谁管? - 根服务器指向 .com 的顶级域服务器。
- 顶级域服务器告诉它:
example.com的权威 DNS 服务器是哪几台(这就是 NS 记录)。 - 递归解析器去问权威服务器,拿到 IP,返回给浏览器。
对你来说,关键是第 4、5 步:你在哪里管理 DNS 记录,取决于域名的 NS(Nameserver)指向哪里。 如果 NS 指向 Cloudflare,你就要在 Cloudflare 后台改记录;在注册商后台改是不会生效的。这是新手最常见的困惑来源。
缓存与 TTL:为什么改了记录不马上生效
为了快,DNS 结果会在浏览器、操作系统、递归解析器等多个地方被缓存,缓存多久由每条记录的 TTL(存活时间)决定。所以改完记录后,有人马上能看到新网站,有人还看到旧的,这很正常。
实用建议:准备迁移网站之前,先把相关记录的 TTL 调小,等旧的缓存过期后再改指向,切换会快很多。修改 NS(换 DNS 服务商)通常比修改单条记录生效得慢,要留出更长的时间。
你会用到的几种记录
| 记录 | 作用 | 典型用途 |
|---|---|---|
| A | 域名 → IPv4 地址 | 根域名(example.com)指向托管平台给你的 IP |
| AAAA | 域名 → IPv6 地址 | 同上,IPv6 版本 |
| CNAME | 域名 → 另一个域名(别名) | www.example.com 指向托管平台给的地址,比如某个 xxx.平台域名 |
| MX | 指定收邮件的服务器 | 用企业邮箱或邮件转发服务时需要 |
| TXT | 存一段文本 | 验证域名所有权(如 Google Search Console)、邮件认证 SPF / DKIM / DMARC |
| NS | 指定这个域名由哪组 DNS 服务器负责 | 换 DNS 服务商时修改 |
有一个规则要记住:根域名(也叫裸域名、apex)按标准不能使用 CNAME,因为根域名上还必须有 NS 等其他记录,而 CNAME 不能和其他记录共存。所以托管平台通常会这样要求:
- 根域名
example.com→ 添加 A 记录,指向平台给的 IP(Vercel 的文档就是这样写的)。 - 子域名
www.example.com或docs.example.com→ 添加 CNAME 记录,指向平台给的地址。
有些 DNS 服务商提供「CNAME 拉平」(CNAME flattening)之类的功能,允许你在根域名上「看起来像」用 CNAME,背后由服务商自动解析成 IP 返回。Cloudflare 文档对这个功能有专门说明。能用就用,不能用就老老实实加 A 记录。
还有一种做法是把域名的 NS 整个交给托管平台(Vercel、Netlify 等都支持),由平台替你管理所有记录。省事,但以后换平台时要把 DNS 一起搬走;如果你还用这个域名收邮件,切换 NS 之前务必先把已有的 MX、TXT 记录抄下来,在新 DNS 服务商那里补上,否则邮件会断。
带不带 www:选一个,然后坚持
example.com 和 www.example.com 在技术上是两个不同的地址。用哪个做「正式地址」没有标准答案,MDN 的说法很中肯:这在很大程度上是个人选择,重要的是选定一个,然后始终如一。
不过有几个参考因素:
- 不带 www:更短,看起来更现代。
- 带 www:它是子域名,可以用 CNAME 灵活指向 CDN 或托管平台,迁移时更省心;Vercel 在你添加根域名时会主动建议加上 www,并在文档里解释了理由。
无论选哪个,都要做到两点:
- 两个地址都能访问。 用户可能输入任何一个。
- 非正式地址用 301 永久重定向跳到正式地址。 比如选了不带 www,那么
www.example.com/abc应该 301 跳转到example.com/abc。这样搜索引擎会把两者视为同一个网站,不会把权重分散到两个地址上。Google 的规范化文档也建议优先用重定向来处理重复网址。
绝大多数托管平台的域名设置页都有「重定向到某个域名」的开关,勾上即可,不需要自己写服务器配置。
HTTPS:证书是怎么来的
HTTPS 让浏览器和网站之间的通信加密,并证明「这个网站确实是 example.com」。现在浏览器会对没有 HTTPS 的网站显示「不安全」,所以它是必选项。
好消息是,主流托管平台和 CDN 都会自动为你申请和续期证书。背后的原理大致是:
- 平台向证书颁发机构(例如免费的 Let's Encrypt)申请证书;
- 证书机构要求证明「你控制这个域名」——常见方法是在网站的特定路径放一个文件(HTTP-01 验证),或者在 DNS 里加一条特定的 TXT 记录(DNS-01 验证);
- 验证通过后签发证书,平台到期前自动续期。
理解这一点,你就能看懂很多证书错误的原因:DNS 还没指过来,平台就没法完成验证,证书就签不下来。 所以绑定域名后看到「证书生成中」,多等一会儿通常就好;如果长时间不好,回头检查 DNS 记录是不是填对了、是不是改错了地方。另外,按 Let's Encrypt 的说明,HTTP-01 方式不能签发通配符证书(*.example.com),通配符证书需要走 DNS 验证,这也是有些平台要求你把 NS 交给它们的原因之一。
用了 CDN 代理时的加密模式
如果你在 Cloudflare 里把记录设成「代理」(橙色云朵),访问路径就变成了「访客 ↔ Cloudflare ↔ 你的源站」两段连接。Cloudflare 的 SSL/TLS 设置决定第二段怎么加密,官方强烈建议使用 Full 或 Full (strict) 模式。
常见翻车现场:源站本身已经强制 HTTPS,而 Cloudflare 用的是只加密第一段的 Flexible 模式,结果两边互相重定向,浏览器报「重定向次数过多」。遇到这个错误,先去检查加密模式。
如果网站托管在 Vercel、Netlify 这类平台上,再套一层 Cloudflare 代理往往是多余的,还可能干扰平台自己的证书签发。不确定时,把记录设为「仅 DNS」(灰色云朵)最稳妥。腾讯 EdgeOne 等其他 CDN 也有类似的回源加密设置,原理相同。
常见问题速查
| 现象 | 最可能的原因 |
|---|---|
| 改了记录完全没变化 | 改错了地方:NS 指向的不是你正在操作的服务商 |
| 有人能打开有人打不开 | DNS 缓存未过期,等 TTL 过去 |
| 带 www 能开,不带打不开(或反过来) | 只配了一条记录;或没设置重定向 |
| 证书错误 / 证书一直在生成 | DNS 还没正确指向平台;CAA 记录限制了证书机构;通配符需要 DNS 验证 |
| 重定向次数过多 | CDN 加密模式和源站的 HTTPS 设置冲突 |
| 换 DNS 后邮件收不到了 | 没把 MX / TXT 记录迁移过去 |
一套推荐配置
对大多数一个人的网站,这样配就够了:
- 选一个正式地址(带或不带 www)。
- 根域名加 A 记录、www 加 CNAME,按托管平台给的值填写。
- 在平台里把非正式地址设置成 301 跳转到正式地址。
- 等平台自动签好证书,用浏览器分别访问
http://、https://、带 www、不带 www 四种组合,确认最后都落到同一个 HTTPS 地址。 - 在 Google Search Console 里用 DNS 方式(加 TXT 记录)验证整个域名。
做完这些,域名这一层就不太会再出问题了。
参考资料
- Cloudflare Learning Center:What is DNS? — https://www.cloudflare.com/learning/dns/what-is-dns/
- Cloudflare DNS 文档:CNAME flattening — https://developers.cloudflare.com/dns/cname-flattening/
- Cloudflare DNS 文档:Proxy status — https://developers.cloudflare.com/dns/proxy-status/
- Cloudflare SSL/TLS 文档:Encryption modes — https://developers.cloudflare.com/ssl/origin-configuration/ssl-modes/
- Vercel 文档:Adding & Configuring a Custom Domain — https://vercel.com/docs/domains/working-with-domains/add-a-domain
- MDN:Choosing between www and non-www URLs — https://developer.mozilla.org/en-US/docs/Web/URI/Guides/Choosing_between_www_and_non-www_URLs
- Let's Encrypt:How It Works — https://letsencrypt.org/how-it-works/
- Let's Encrypt:Challenge Types — https://letsencrypt.org/docs/challenge-types/
- Google Search Central:How to specify a canonical URL — https://developers.google.com/search/docs/crawling-indexing/consolidate-duplicate-urls
- Google Search Central:Redirects and Google Search — https://developers.google.com/search/docs/crawling-indexing/301-redirects
常见问题
- 在注册商后台改了 DNS 记录为什么不生效?
- 你在哪里管理 DNS 记录,取决于域名的 NS 指向哪里。如果 NS 指向 Cloudflare,就要在 Cloudflare 后台改记录,在注册商后台改是不会生效的。
- 根域名可以用 CNAME 记录吗?
- 按标准不能,因为根域名上还必须有 NS 等其他记录,而 CNAME 不能和其他记录共存。通常根域名加 A 记录指向平台给的 IP,www 等子域名加 CNAME。有些 DNS 服务商提供 CNAME 拉平功能。
- 网站域名要不要带 www?
- 没有标准答案,重要的是选定一个然后始终如一:两个地址都能访问,非正式地址用 301 永久重定向跳到正式地址,这样搜索引擎会把两者视为同一个网站。
- 绑定域名后证书一直在生成,怎么办?
- DNS 还没指过来,平台就没法完成验证,证书就签不下来。多等一会儿通常就好;如果长时间不好,回头检查 DNS 记录是不是填对了、是不是改错了地方。
- 用 Cloudflare 后提示重定向次数过多是怎么回事?
- 常见原因是源站已经强制 HTTPS,而 Cloudflare 用的是只加密第一段的 Flexible 模式,两边互相重定向。先去检查加密模式,Cloudflare 官方建议使用 Full 或 Full (strict)。