公司有一些托管的项目,开发也是我们做的。在开发完成后,一般的客户都会要求使用自己的域名。之前的项目都是客户自己买新的服务器,然后我们帮忙部署上线。现在是托管的项目,就想着,是不是可以不用转移代码(最多做一个备份版本,或者测试版本),直接把客户的域名指向到我们现在使用的域名上。

需求一出来,迸到脑子里的想法就是做CNAME解析。之前接触到最多的就是A类型或者AAAA类型解析,就是域名指向ipv4地址或者ipv6地址。但做完CNAME解析后发现,实际情况并不是想象中那么简单。

阿里云有多种解析类型,简单介绍如下:

A

将域名指向一个IPV4地址

CNAME

将域名指向另一个域名

AAAA

将域名指向一个IPV6地址

NS

将子域名指向其他DNS服务器解析

MX

将域名指向邮件服务器地址

SRV

记录提供特定的服务的服务器

TXT

通常做SPF记录(反垃圾邮件)

CAA

CA证书颁发机构授权校验

显性URL

将域名302重定向到另外一个地址

隐性URL

与显性URL类似,但会隐藏真实目标地址

在购买域名后,阿里云会自动生成几条解析记录

域名初始解析
域名初始解析

之后一般的会有www的A类解析,而针对其他类型(域名到域名)做了一个测试,分别添加该类型的解析地址到另外一个域名上:
CNAME 可以解析到任意的域名,但最终访问的结果,是任意的域名的默认主机或者说根目录地址。在指向非默认主机(任意其他二级域名)时,都会跳转到默认主机地址。这与想象中的效果完全不一样。当然可以在指向的域名配置里server_name(nginx服务器)里加上这个域名,这样的话就可以跳到指向的域名了。但这似乎有点麻烦了!

NS在我看来,应该是指向阿里外的DNS服务器解析,一般用不到。

显性URL和隐性URL解析,应该是由ali的DNS服务器自动识别跳转的。实际就是302重定向,在浏览器的框里可以看到两次请求,一次是之前的域名,一次是重定向之后的域名。区别在于隐性URL解析可以在浏览器地址栏保持原来的地址。

在网上搜集关于解析说名的有样子的说法,但阿里云并未提供301重定向:

CNAME记录是域名指向另一个域名
A记录是域名指向IP地址
URL跳转是打开这个网址的时候会跳转到另一个指定的网址,URL跳转分为301永久重定向和302临时重定向。
301永久重定向会使搜索引擎抓取新的内容时使用重定向后的新地址,而302临时重定向会使搜索引擎抓取新内容时保留重定向前的旧地址。

而且,当域名指向一个https地址的域名时,chrome浏览器会直接提示当前访问地址不安全,强行访问后,https会被划掉,同样提示不安全连接。而通过重定向访问的地址不会有这个问题。