域名解析的MX和CNAME记录冲突问题的解决
2019年7月14日大约 2 分钟
最近又遇到了 MX 记录和 CNAME 记录冲突的问题,简单记录一个解决办法,方便以后参考一下
CloudXNS 免费业务要关停了,这样就不得不把我的域名迁出去。我选择的是以前用过的 DNSPOD,这次迁移成本其实不大,把解析记录从 CloudXNS 导出到 excel 中,然后复制粘贴替换就可以轻松转化成 DNSPOD 的格式,再导入到 DNSPOD 就可以了,当你看到这篇文章时,已经迁移完成了。
说一下中间遇到的一个比较麻烦的问题吧,因为我有两个域名做了域名邮箱,这样 MX 记录就必须要有,但是我这两个域名同时也需要可以正常访问我的网站,网站用了 CDN,这样就必须要有 CNAME 记录,但是正常来说,CNAME 记录和 MX 记录时冲突的。
主机记录 | 记录类型 | 记录值 |
---|---|---|
@ | MX | mxbiz1.qq.com. |
@ | CNAME | CDN 的 CNAME 记录 |
其实@记录解析过去,也是会 301 跳转到 blog 记录上的。听起来和显性 URL 功能一样,但是显性 URL 也会和 MX 记录冲突。
CloudXNS 有一个独有的 Link 记录可以解决这个问题,当时也正是看重了这个功能,才把域名解析迁移到 CloudXNS 上的。现在换到了 DNSPOD 上,没有了这个功能了,无奈只能想其他的解决办法了。
灵机一动,想到我还有一台跑各种服务的 VPS,那就在 VPS 上做个 301 吧。
首先把@
的 A 记录记录解析到 VPS 的 IP 上,然后在 NGINX 上配置
if ($host ~ '^xxwhite.com'){
return 301 https://blog.xxwhite.com$request_uri;
}
或者
if ($host ~ '^xxwhite.com'){
return 302 https://blog.xxwhite.com$request_uri;
}
这样就解决了前面提到的问题。
那如果我不想跳转的话,要怎么办?那就用反向代理吧,如果访问量特别大的话,反向代理肯定时不合适的,但这也是没有办法的办法了。