摆摊AI 产品实战手册

域名、DNS 与 HTTPS

域名所有权、解析记录、证书续期和反向代理头。回调循环和错误域名这类故障多半出在这一层。

域名不是上线前临时买的一条链接。它连着网站、邮箱、OAuth 回调、支付回调和用户对你的信任,一旦投入使用,迁移成本会持续上升。

这一页管三件事:域名归谁、解析怎么配、HTTPS 到底算不算配好了。业务邮箱单独一页:业务邮箱与发信送达。

快速版

  1. 域名注册人、续费邮箱、付款方式必须由你自己控制。
  2. 开自动续费 + 双重验证 + 域名锁定,保存注册商的账号恢复方式。
  3. 改 DNS 之前先导出现有记录。
  4. 降低 TTL 只能缩短缓存,不能让全网同时生效。
  5. HTTPS 配好的标准是证书能自动续期,不是"现在能打开"。
  6. 反向代理必须正确传递协议和主机头,否则回调会重定向循环。
  7. 换域名时旧域名的证书要保留,跳转需要它。

域名先看四件事

  • 容易读、容易输入,不需要额外解释拼法
  • 主流平台和搜索结果里没有明显冲突(顺手查一下商标,见个体户还是公司)
  • 注册人、续费邮箱、付款方式由自己控制
  • 能接受长期续费价格,不只看首年促销

第三条最容易出问题。找人代注册、用了别人的账号、续费邮箱是前同事的——这些在需要转移或恢复时都会变成大麻烦。域名是产品最底层的资产,所有权必须清晰。

关于后缀:.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)完整走一遍登录流程。

如果登录后出现重定向循环或者跳到了错误的地址,回到上面那四行代理头。

下一步

  1. 业务邮箱与发信送达——MX、SPF、DKIM 和实测送达
  2. 自建服务器部署——nginx 和证书的完整配置
  3. 备案怎么办——境内为主时域名的额外要求
  4. 环境变量与密钥管理——换域名要重新构建的原因

On this page