cname原理解析


最近在做服务器迁移,发现子域名用了50多个都指向了同一个测试服务器的IP。这时候在思考“每次迁移都得修改50多处,是否太麻烦?能否有个变量替代,然后这50多个域名指向这个变量,迁移的时候只修改一次这个变量即可?”

按照这个思路,想到了cname有这个作用。继续顺着这个思路思考,开始用我司官网做了测试。但是又有个问题就是http协议的虚拟主机,是cname前的域名?还是cname后的域名?顺便想起了另外一个问题:“域名托管给CDN也是要cname,这块的原理再梳理一下。”

A记录:先用www.techvc.net指向新搭建服务器的IP,也就是A记录。用www.techvc.net访问正常。用www.techvc.cn,无法访问。因为服务器没有配置http虚拟主机。配置如下:

    listen 80 default_server;
		listen 443 ssl http2 default_server;
		server_name www.techvc.net techvc.net;
		index index.php index.html index.htm default.php default.htm default.html;
		root /www/wwwroot/www.techvc.net;

cname:然后配置www.techvc.cn–>cname–>www.techvc.net,浏览器F12,HOST属性用的是www.techvc.cn,而不是www.techvc.net。说明这个是dns服务器的行为,不会干扰http请求。也就是说,服务器得配置www.techvc.cn虚拟主机才可以。重点看黑色部分,配置如下:

    listen 80 default_server;
		listen 443 ssl http2 default_server;
		server_name www.techvc.net techvc.net www.techvc.cn techvc.cn;
		index index.php index.html index.htm default.php default.htm default.html;
		root /www/wwwroot/www.techvc.net;

最后,缓存是重点。在做DNS调试的时候一定要有耐心。如果是通过网站调试,那么网站缓存及浏览器的DNS缓存、DNS服务器解析缓存、服务端应用缓存都是个问题。这一块要慢慢等待,或者想办法失效。尤其是浏览器中https自动向http重定向的缓存,需要浏览器ctrl + shift + del删除才可以。

另外附上:DNS各记录类型使用目的

记录类型使用目的
A 记录将域名指向一个 IP 地址(外网地址)。
CNAME 记录将域名指向另一个域名,再由另一个域名提供 IP 地址(外网地址)。
MX 记录设置邮箱,让邮箱能收到邮件。
NS 记录将子域名交给其他 DNS 服务商解析。
AAAA 记录将域名指向一个 IPv6 地址。
SRV 记录用来标识某台服务器使用了某个服务,常见于微软系统的目录管理。
TXT 记录对域名进行标识和说明,绝大多数的 TXT 记录是用来做 SPF 记录(反垃圾邮件)。
隐、显性 URL 记录将一个域名指向另外一个已经存在的站点。
摘自腾讯云DNS解析介绍

Views: 131


发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注