缘起
花了两天时间将博客从 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
 4- 185.199.108.153 
 185.199.109.153
 185.199.110.153
 185.199.111.153
- www 通过 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 许可协议。
 
    
    
 
            
        