A 记录和 CNAME 怎么选:顺手把 TTL、NS 和 GitHub Pages 讲清楚

1次阅读
没有评论

给博客、文档站、接口域名或 GitHub Pages 绑自定义域名时,最容易卡住的不是页面本身,而是 DNS 记录怎么填。

后台里会看到 AAAAACNAMENSTXTMXTTL 这些词。它们不难,但如果一开始混在一起看,就很容易出现“解析填了,但打不开”“换了 IP,半天不生效”“根域和 www 不知道怎么配”的问题。

这篇只抓日常最常遇到的几类记录,尤其是 A 记录和 CNAME。

域名层级先看清楚

一个域名可以拆成多层:

www.example.com.
│   │       │   └── 根域,日常省略不写
│   │       └────── 顶级域,比如 com / cn / net
│   └────────────── 二级域,比如 example
└────────────────── 子域,比如 www

日常说“买了一个域名”,通常买的是 example.com 这样的二级域。www.example.comblog.example.comapi.example.com 都是它下面的子域。

DNS 解析的工作,就是把这些域名转换成 IP 地址,或者把一个名字指向另一个名字。

常见 DNS 记录分别做什么

可以先记这几类:

| 记录 | 用途 |

|——|——|

| A | 域名指向 IPv4 地址 |

| AAAA | 域名指向 IPv6 地址 |

| CNAME | 域名指向另一个域名 |

| NS | 指定这个域名由哪组 DNS 服务器负责解析 |

| MX | 指定邮件服务器 |

| TXT | 放一段文本,常用于站长验证、SPF、DKIM 等 |

| SRV | 服务定位,比如某个协议服务跑在哪台机器和端口 |

| PTR | IP 反查域名 |

个人站点最常碰到的是 ACNAMETXTNS

比如:

  • 服务器固定 IP:常用 A 记录。
  • 子域名指向某个平台给的域名:常用 CNAME
  • 搜索引擎、邮箱、平台验证:常用 TXT
  • 想把解析托管到 Cloudflare 或 DNSPod:改 NS

A 记录适合直接绑定 IP

A 记录就是:

域名 -> IPv4 地址

比如你有一台 VPS,公网 IP 是某个固定地址,就可以把主域名或子域名直接解析到这台机器。

它的优点是直观:查到域名就能拿到 IP。

缺点是如果服务器 IP 变了,每条指向旧 IP 的 A 记录都要改。记录少时没问题,子域名一多,就容易漏。

所以 A 记录适合这些场景:

  • 自己有固定公网 IP。
  • 解析目标就是一台服务器或一个负载均衡 IP。
  • 希望根域名 example.com 直接指到某个 IP。

CNAME 适合指向另一个域名

CNAME 是别名记录:

域名 -> 另一个域名 -> 最终再解析到 IP

例如:

www.example.com -> your-name.github.io

浏览器访问 www.example.com 时,DNS 会先知道它是另一个域名的别名,再继续解析后者。

它的好处是维护成本低。平台后面换 IP,你不用跟着改,只要平台提供的目标域名不变即可。

所以 CNAME 适合这些场景:

  • 子域名接入 GitHub Pages、Netlify、Vercel、对象存储、CDN 等平台。
  • 多个子域想跟随同一个平台域名。
  • 目标 IP 由第三方平台维护,你不想关心它背后的 IP 变化。

注意一个常见限制:同一个主机记录下,CNAME 通常不能和其他记录并存。也就是说,一个名字如果已经是 CNAME,就不要再给它同时配 A、MX、TXT 之类的记录。

A 记录和 CNAME 怎么选

可以按这个思路判断:

| 场景 | 建议 |

|——|——|

| 目标是固定 IP | 用 A 记录 |

| 目标是第三方平台给你的域名 | 用 CNAME |

| 根域名要指向服务器 | 常用 A 记录 |

| www 子域名指向博客托管平台 | 常用 CNAME |

| 平台明确要求某种记录 | 按平台文档来 |

一个常见组合是:

example.com      A      指向自己的服务器或平台要求的 IP
www.example.com  CNAME  指向平台提供的域名

也可以反过来让 www 做主入口,再把根域名跳转到 www。关键不是哪种绝对更好,而是入口要统一,避免一个站点同时散落多个 canonical 地址。

TTL 决定变更多久生效

TTL 是 DNS 缓存时间,单位通常是秒。

如果 TTL 是 3600,意思是递归 DNS 或客户端可以把这条解析缓存大约 1 小时。你改完记录后,不一定全网马上看到新结果,要等旧缓存过期。

所以迁移域名或切 IP 前,常见做法是:

  1. 提前把 TTL 调小,比如从 3600 调到 300。
  2. 等旧 TTL 周期过完。
  3. 再切换目标 IP 或 CNAME。
  4. 确认稳定后再把 TTL 调回更稳的值。

TTL 不是越小越好。太小会增加 DNS 查询次数,也可能让解析更依赖上游稳定性。日常站点用 300、600、3600 都很常见,按变更频率和平台建议来即可。

NS 是把解析权交给谁

NS 记录表示这个域名由哪组 DNS 服务器负责解析。

买域名时,注册商通常会给你一组默认 NS。你也可以把 NS 改到 Cloudflare、DNSPod、阿里云 DNS 等平台。

改 NS 的意义是把解析管理入口换到另一个平台。例如:

  • 想用 Cloudflare 的 CDN、安全防护和可视化 DNS。
  • 想用 DNSPod 的国内线路解析。
  • 想把域名注册商和解析服务分开管理。

需要注意:改 NS 是比较上层的切换。切过去以后,真正生效的 DNS 记录要在新的 DNS 平台里维护。很多“我明明在注册商里改了 A 记录却不生效”的问题,本质是 NS 已经指向别的平台了。

GitHub Pages 自定义域名怎么理解

GitHub Pages 绑定自定义域名时,经常会出现两种方式:

  1. 根域名用 A 记录指向 GitHub Pages 公布的 IP。
  2. www 子域用 CNAME 指向 <user>.github.io

同时,仓库里通常还要有一个 CNAME 文件,内容写你的自定义域名。它的作用是告诉 GitHub:这个 Host 应该路由到哪个 Pages 站点。

这里不要死记某几个 IP,因为平台文档可能更新。真正稳的做法是:配置时打开 GitHub Pages 官方文档,看当前推荐的 A 记录 IP 和 CNAME 写法。

排查时先按这几步走

域名打不开时,不要一上来重装服务。先按 DNS 这条线排:

  1. 看当前域名 NS 指向哪里,确认自己在哪个平台改记录才算数。
  2. 看主机记录有没有填错,比如根域名通常是 @www 是子域。
  3. 看记录类型是否符合目标平台要求,别把该写 CNAME 的地方写成 A。
  4. 看 TTL 是否还没过期,旧解析可能还在缓存。
  5. dignslookup 或在线 DNS 工具查实际返回值。
  6. DNS 已经对了,再看 Web 服务、HTTPS 证书和平台绑定状态。

这样排查会比来回改记录更稳。

小结

DNS 记录可以先记成几句话:

  • A 记录:域名直接指向 IPv4。
  • AAAA:域名直接指向 IPv6。
  • CNAME:域名指向另一个域名。
  • TXT:放验证文本或邮件安全配置。
  • NS:决定这个域名由哪组 DNS 服务器负责。
  • TTL:决定缓存多久,影响变更生效速度。

实际配置时,先看目标是 IP 还是平台域名,再决定 A 记录或 CNAME。再确认 NS 和 TTL,很多域名问题就已经排掉一半了。

正文完
 0
bdspAdmin
版权声明:本站原创文章,由 bdspAdmin 于2026-06-11发表,共计2741字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
评论(没有评论)