域名解析二三事

前言

最近想要把搭建的api服务器和部署项目的路径用二级域名进行关联,以方便进行访问,免得一大串的地址和端口暴露出来。但是发现有时候域名解析还真不是那种随意就能正确的得到自己想要的结果……

一些域名解析类型

域名的解析也分很多种,以下列出的是我用的比较多的几种类型。

A类型

A类型可以将主机记录(二级域名)指向一个ipv4类型的ip地址;但是需要注意的是,该类型不能在ip地址后加上端口;比如:

1
2
主机记录:xx.test.com
记录值:aa.bb.cc.dd

上述记录的意思就是访问xx.test.com的时候实际上是访问ip地址为aa.bb.cc.dd的主机;但是如果在ip地址后加上端口号:

1
记录值:aa.bb.cc.dd:port

以上的记录值是非法的;其实我就是想将某个二级域名直接解析到主机的某个端口,然后尝试无果……

CNAME类型

CNAME类型的记录可以将当前记录指向另一个域名;需要注意的是仅仅是域名,不能在域名的后面添加路径或参数!!!

合法记录值:

1
2
3
xx.test.com
test.com
www.test.com

非法记录值:

1
2
3
test.com/path/
test.com/123.html
test.com?a=b

URL转发

URL转发就是将当前记录跳转到另一个url地址,因此只要是url地址可以访问的,都可以用来转发;不过URL转发还分为显性URL转发和隐性URL转发,它们的区别在于:

显性URL转发使用301永久重定向,即地址栏上的url地址会换成转发后的url地址,而非当前记录使用的url地址;而隐性URL转发使用的是302临时重定向,访问时浏览器地址栏依然是当前记录使用的url地址,但是实际访问的是转发的url地址。

:但是实际使用时我发现,如果访问当前记录(域名地址)的路径或参数形式时,并不是把域名部分替换成转发的url然后加上后面的路径或参数,而照样只是访问之前的转发url地址;如:

1
2
3
类型:URL转发
主机记录:xx.test.com
记录值:another.com/abc

当我访问xx.test.com/someting时,实际上跳转的还是another.com/abc而非想象中的another.com/abc/something;访问xx.test.com?aa=bb时,实际上跳转的也还是another.com/abc而非想象中的another.com/abc?aa=bb;所以我就很疑惑,这到底是本身就是这样的设计,还是我的设置有问题?如果本身设计就是这样,那未免有点太鸡肋了……