Cloudflare DNS 解析踩坑:www 的 CNAME 和 A 记录不能共存
博客上线那天,我给自己倒了杯咖啡,准备欣赏一下成果:opusmia.com 打开,完美;www.opusmia.com 打开——跳到了一个完全陌生的页面。咖啡差点喷在键盘上。我的第一反应是:证书又坏了?Nginx 配置写劈叉了?查了一圈,最后发现问题根本不在服务器上,在 Cloudflare 的 DNS 里:www 的 CNAME 指到了别处,一个我早忘了的旧地址。 那天下午我没写成博客,全用来给自己扫盲 DNS 了。下面是这个坑的完整经过。 现象:主域名好好的,www 去了别人家 先说症状。opusmia.com 一切正常,HTTPS 小锁头端端正正。但 www.opusmia.com 打开,要么转半天打不开,要么跳到一个跟我毫无关系的页面。我当时脑子里闪过的第一个念头是证书问题——毕竟前两天刚折腾完 certbot,惊弓之鸟。 但冷静下来想想:证书是按域名签的,www 的问题如果出在证书上,浏览器应该报证书错误,而不是"去了别人家"。去了别人家,说明解析就错了,流量根本没到我的 VPS。 排查:dig 是个好东西 我 SSH 上服务器,直接问 DNS: dig www.opusmia.com +short dig opusmia.com +short 主域名返回了我的 VPS 地址(意料之中),www 返回的却是一个陌生的地址,还带了一串 CNAME。看到 CNAME 那一刻我就明白了:www 被一条 CNAME 记录指到了别处。 登录 Cloudflare 后台一看,果然:www 下面躺着一条 CNAME,指向一个我早期瞎折腾时填的旧地址。再往下一翻,更精彩——同一主机名 www 下面,还躺着一条 A 记录。CNAME 和 A 记录在同一个主机名上共存,Cloudflare 虽然没报错,但解析结果完全不可预期。这就好比给 HOA 交了两份地址变更表,一份说我住 A 街,一份说我住 B 街,邮递员只能凭心情送信。 根因:早期瞎折腾留下的烂摊子 这条 CNAME 是我刚买域名那会儿留下的。当时还没想好博客放哪儿,随手把 www 指到了一个临时地方。后来决定自建博客,主域名的 A 记录改到了 VPS,www 的这条旧 CNAME 却被我忘得一干二净。 ...