缘起
花了两天时间将博客从 Typecho 迁移至 Hexo, 既然是 Hexo 那不白嫖都不行了对吧。遂将博客部署至 Github Pages,评论则部署到了 Vercel + MongoDB Atlas。主打一个白嫖到底(
但是 Github Pages 在中国大陆的访问速度并不尽人意,于是又套了一层腾讯云的 CDN 来加速访问。
概述
由于 CNAME 跟任何记录都冲突的特性,在根域 @ 下添加 CNAME 记录指向 CDN(或其他服务)会导致 mx(邮箱记录)、TXT、DS 等记录冲突等且多级 CNAME 会导致解析性能下降等问题。
参考资料
而我由于配置了域名邮箱的 MX 解析,在我给 @ 添加 CNAME 解析时,DNSPod 弹出冲突警告。但此时解析记录还是能够被创建出来,但是会面临邮箱无法正常收信、收信时好时坏的风险。这是因为若邮箱服务器的 localDNS 优先进行了 @ 记录的 CNAME 类型解析,此时对 @ 记录的 MX 类型解析会受到影响,从而产生解析失败或无法达到预期解析结果的现象。
可行方案
- A 记录轮询(未深入了解)
- 使用 ALIAS 记录替换 CNAME(好像 DNSPod 并不支持,遂放弃)
- 使用 www 接入 CDN,并将 @ 通过 A 记录指向 Github Pages 的 IPv4 地址,在请求 @ 时跳转到 www(最终采用)
采用方案
Github Pages 设置自定义域名为
www.mikuac.com
@ 通过 A 记录解析到 Github Pages 的 IPv4 地址
1
2
3
4185.199.108.153
185.199.109.153
185.199.110.153
185.199.111.153www 通过 CNAME 解析到 CDN 地址
CDN 回源到 Github Pages 的四个 IPv4 地址
CDN 回源 HOST 配置为
www.mikuac.com
结论
在经过这么一番折腾之后,已经能够满足我的要求了,除了在访问博客的时候会有 www 有点不爽之外。但是现在的浏览器都会隐藏 www 所以也没啥实质性的影响。
当用户请求 mikuac.com
时,请求会解析至 Github Pages,随后 Github Pages 会将该链接跳转至 www.mikuac.com
以使得访问者通过 CDN 来加速访问以达到我们想要的效果。
后话
在给 @ 配置 Github Pages A 记录的时候,发现 DNSPod 最高只能配置 2 条记录(表示疑惑),需要收费升级套餐才能够添加更多的记录,时间有点久远,已经忘记当时为什么用 DNSPod 了。
感觉应该把换一个 DNS 服务商提上日程了(
- 本文链接: https://mikuac.com/cname-mx-conflict/
- 版权声明: 本博客所有文章除特别声明外,均默认采用 CC BY-NC-SA 4.0 许可协议。