域名、DNS 与 HTTPS
域名所有权、解析记录、证书续期和反向代理头。回调循环和错误域名这类故障多半出在这一层。
域名不是上线前临时买的一条链接。它连着网站、邮箱、OAuth 回调、支付回调和用户对你的信任,一旦投入使用,迁移成本会持续上升。
这一页管三件事:域名归谁、解析怎么配、HTTPS 到底算不算配好了。业务邮箱单独一页:业务邮箱与发信送达。
快速版
- 域名注册人、续费邮箱、付款方式必须由你自己控制。
- 开自动续费 + 双重验证 + 域名锁定,保存注册商的账号恢复方式。
- 改 DNS 之前先导出现有记录。
- 降低 TTL 只能缩短缓存,不能让全网同时生效。
- HTTPS 配好的标准是证书能自动续期,不是"现在能打开"。
- 反向代理必须正确传递协议和主机头,否则回调会重定向循环。
- 换域名时旧域名的证书要保留,跳转需要它。
域名先看四件事
- 容易读、容易输入,不需要额外解释拼法
- 主流平台和搜索结果里没有明显冲突(顺手查一下商标,见个体户还是公司)
- 注册人、续费邮箱、付款方式由自己控制
- 能接受长期续费价格,不只看首年促销
第三条最容易出问题。找人代注册、用了别人的账号、续费邮箱是前同事的——这些在需要转移或恢复时都会变成大麻烦。域名是产品最底层的资产,所有权必须清晰。
关于后缀:.com 之外的新后缀完全可用,但有两件事要注意。一是部分后缀在某些平台的链接识别或分享场景里表现不一致;二是如果你计划做境内备案,要先确认该后缀在备案支持范围内,不是所有后缀都能备案。
摆摊用的是 .dev 域名。这个后缀有个特点值得知道:它在浏览器层面被强制要求 HTTPS,也就是说没有证书的话根本打不开,没有"先用 HTTP 跑着"这个选项。
重要域名一定要开自动续费。域名过期后有一段赎回期,费用通常远高于正常续费价,超过赎回期就可能被别人注册。同时开双重验证和域名转移锁——域名被盗的后果比服务器被入侵更难恢复。
DNS 记录分别做什么
| 记录 | 常见用途 |
|---|---|
| A / AAAA | 把域名指向服务器 IP(A 是 IPv4,AAAA 是 IPv6) |
| CNAME | 把子域名指向另一个域名,常用于托管平台 |
| MX | 指定接收邮件的服务器 |
| TXT | 域名所有权验证、发信认证(SPF/DMARC)、各种平台校验 |
| CAA | 限定哪些证书机构可以为这个域名签发证书 |
两条实践:
改之前先导出。 大部分 DNS 服务商支持导出记录文件,没有的话至少截图。改错一条 MX 记录就会让邮件全部丢失,而且你不会立刻发现。
TTL 的作用被高估了。 提前把 TTL 降到较小值能缩短缓存时间,但实际生效受各级递归解析器影响,部分线路会比你预期的慢很多。计划迁移时按"可能有一段时间新旧并存"来准备,不要假设某个时刻全网整齐切换。
裸域和 www
两种做法都行,但必须选一个作为规范地址,另一个 301 跳过去。
不做统一的后果:搜索引擎按两个站点收录,OAuth 回调可能因为域名不匹配失败,统计数据被拆成两份。
HTTPS 配好的标准
"现在用 HTTPS 能打开"不等于配好了。检查这五项:
- 证书能自动续期,并且验证过续期流程
- HTTP 自动跳转到 HTTPS
- 裸域和
www有统一规则 - 反向代理正确传递协议和主机头
- 证书覆盖了所有实际使用的子域名
第一项是最常被跳过的。用自动化工具签发的证书有效期通常只有几个月,装完当天什么都正常,几十天后集体过期。
配好之后立刻验证续期能跑通,而不是等到过期:
sudo certbot renew --dry-run这条命令走完整续期流程但不真的替换证书。它成功了才算配完。
反向代理头:回调故障的常见根因
如果你用 nginx 之类的反向代理,这四行是必需的:
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;为什么重要:应用生成绝对链接(OAuth 回调地址、邮件里的链接、支付回调)时依赖这些头判断"我对外是什么地址、用的什么协议"。
配错的表现不是报错,而是这些症状:
| 症状 | 通常原因 |
|---|---|
| 登录后重定向循环 | 缺 X-Forwarded-Proto,应用以为是 HTTP,又跳一次 HTTPS |
| 回调地址变成内网地址或 localhost | 缺 Host,应用拿不到对外域名 |
| 邮件里的链接域名不对 | 同上 |
| 日志里所有请求都来自同一个 IP | 缺 X-Real-IP / X-Forwarded-For,看到的是代理的地址 |
看到"重定向循环"先查这四行,再去查应用代码。
换域名清单
换域名牵动的地方比想象中多。我们自己换过一次,这是完整清单:
- 新域名解析指向服务器
- 新域名申请证书
- 构建时的站点地址变量(必须重新构建,见环境变量与密钥管理)
- 认证服务的回调基地址
- 第三方 OAuth 应用后台登记的回调地址
- 支付平台后台配置的回调地址
- 发信域名和相关解析记录
- sitemap、robots、OG 图里的绝对地址
- 旧域名配置 301 跳转到新域名
- 旧域名的证书保留
最后一条容易漏。旧域名要做 301 跳转,就意味着它还要继续接收 HTTPS 请求,所以它的证书必须继续有效、继续续期。把旧域名证书删掉,跳转就会变成证书错误页。
域名资产表
记一张表,放在你三个月后还能找到的地方:
域名:____________ 到期日:____________
注册商:____________ 自动续费:是 / 否
注册人邮箱:____________ 双重验证:是 / 否
DNS 托管方:____________
证书方式:____________ 续期方式:____________
邮箱服务:____________
关联平台(用它做过验证的):____________最后一项经常被忽略:你用这个域名在多少个平台做过所有权验证? 支付平台、OAuth 应用、云服务、统计工具——换域名或改解析时这些都要跟着动。
密钥不写在这张表里,只记录它存在哪。
常见卡点
| 卡在哪 | 可能原因 | 试试这样 |
|---|---|---|
| 登录后无限重定向 | 缺 X-Forwarded-Proto | 补齐四行代理头 |
| 回调地址变成 localhost | 缺 Host 头 | 同上 |
| 证书几十天后集体过期 | 没验证自动续期 | certbot renew --dry-run |
| 换域名后旧链接报证书错误 | 删了旧域名证书 | 旧域名证书要保留 |
| 改了解析但部分用户还是旧地址 | 缓存未过期 | 按新旧并存一段时间来准备 |
| 邮件突然全部收不到 | MX 记录被改错 | 改 DNS 前先导出记录 |
| 搜索引擎收录了两个站 | 裸域和 www 没统一 | 定规范地址,另一个 301 |
| 域名过期被别人注册 | 续费邮箱失效 | 开自动续费,核对续费邮箱可用 |
| 备案时发现后缀不支持 | 没提前确认 | 买域名前确认后缀在备案支持范围内 |
验收标准
- 域名注册人和续费邮箱由自己控制,且邮箱能正常收信
- 自动续费、双重验证、转移锁都已开启
- DNS 记录已导出备份
- 裸域和
www有统一规则 -
certbot renew --dry-run(或对应的续期演练)通过 - 四行代理头齐全,登录和回调在公网域名下实测通过
- 域名资产表已建立,包含"在哪些平台做过验证"
- 如果换过域名,旧域名的 301 和证书都还有效
本章动作
跑一次证书续期演练,然后从公网域名(不是 localhost)完整走一遍登录流程。
如果登录后出现重定向循环或者跳到了错误的地址,回到上面那四行代理头。