DNS 解析
DNS 的作用:把域名翻译成服务器地址。配置错了,网站就打不开。
记录类型
| 类型 | 用途 | 示例 |
|---|---|---|
| A | 指向 IPv4 地址 | @ → 1.2.3.4 |
| AAAA | 指向 IPv6 地址 | @ → 2001:db8::1 |
| CNAME | 指向另一个域名 | blog → xxx.github.io |
| MX | 邮件服务器 | @ → mx.example.com |
| TXT | 验证、SPF、DKIM | @ → v=spf1 ... |
| NS | 指定 DNS 服务器 | 一般由注册商管理 |
主机记录怎么填
| 想访问的地址 | 主机记录 |
|---|---|
example.com | @ |
www.example.com | www |
blog.example.com | blog |
| 任意子域 | *(泛解析) |
建站最常见的两条记录
text
类型 主机记录 记录值 TTL
A @ 你的服务器公网 IP 600
A www 你的服务器公网 IP 600如果服务商支持 CNAME 接入 CDN:
text
类型 主机记录 记录值
CNAME @ 你从 CDN 拿到的 CNAME 地址
CNAME www 同上根域名不要乱用 CNAME
@ 用 CNAME 在部分 DNS 服务上不合法,可能导致解析异常。根域名优先用 A / AAAA,或使用服务商提供的 CNAME 拉平(CNAME Flattening)。
TTL 是什么
TTL 是缓存时间,单位秒。600 表示 10 分钟。
- 平时可以设大一点(3600),减少查询;
- 准备换 IP 前,先把 TTL 调小(如 300),等一个旧 TTL 周期后再换,切换更快。
解析不生效怎么查
bash
# 查权威结果
dig example.com +short
nslookup example.com
# 指定公共 DNS 查
dig @8.8.8.8 example.com +short
dig @1.1.1.1 example.com +short排查顺序:
- 记录填对了吗:主机记录、类型、值、有没有多余空格;
- 域名状态正常吗:是否实名完成、是否
ServerHold、是否过期; - 本地缓存:换网络或等 TTL 过期再试;
- 服务器侧:解析对了但打不开,看 防火墙与端口;
- Web 服务:Nginx 是否配置了该域名。
邮件相关
发邮件需要 MX 和 SPF,建议再加 DKIM 和 DMARC:
text
TXT @ v=spf1 include:你的邮件服务商 -all
TXT _dmarc v=DMARC1; p=none; rua=mailto:[email protected]只配 MX 不配 SPF,邮件很容易进垃圾箱。
一个常见坑
「解析生效了,但访问的是旧网站」通常是:
- 浏览器缓存;
- CDN 缓存;
- 本地 DNS 缓存;
- 服务器上 Nginx 的
server_name没匹配到,落到了默认站点。