域名解析二三事
前言
最近想要把搭建的api
服务器和部署项目的路径用二级域名进行关联,以方便进行访问,免得一大串的地址和端口暴露出来。但是发现有时候域名解析还真不是那种随意就能正确的得到自己想要的结果……
一些域名解析类型
域名的解析也分很多种,以下列出的是我用的比较多的几种类型。
A类型
A
类型可以将主机记录(二级域名)指向一个ipv4
类型的ip
地址;但是需要注意的是,该类型不能在ip
地址后加上端口;比如:
1 | 主机记录:xx.test.com |
上述记录的意思就是访问xx.test.com
的时候实际上是访问ip
地址为aa.bb.cc.dd
的主机;但是如果在ip
地址后加上端口号:
1 | 记录值:aa.bb.cc.dd:port |
以上的记录值是非法的;其实我就是想将某个二级域名直接解析到主机的某个端口,然后尝试无果……
CNAME类型
CNAME
类型的记录可以将当前记录指向另一个域名;需要注意的是仅仅是域名,不能在域名的后面添加路径或参数!!!
合法记录值:
1 | xx.test.com |
非法记录值:
1 | test.com/path/ |
URL转发
URL
转发就是将当前记录跳转到另一个url
地址,因此只要是url
地址可以访问的,都可以用来转发;不过URL
转发还分为显性URL
转发和隐性URL
转发,它们的区别在于:
显性URL
转发使用301
永久重定向,即地址栏上的url
地址会换成转发后的url
地址,而非当前记录使用的url
地址;而隐性URL
转发使用的是302
临时重定向,访问时浏览器地址栏依然是当前记录使用的url
地址,但是实际访问的是转发的url
地址。
注:但是实际使用时我发现,如果访问当前记录(域名地址)的路径或参数形式时,并不是把域名部分替换成转发的url
然后加上后面的路径或参数,而照样只是访问之前的转发url
地址;如:
1 | 类型:URL转发 |
当我访问xx.test.com/someting
时,实际上跳转的还是another.com/abc
而非想象中的another.com/abc/something
;访问xx.test.com?aa=bb
时,实际上跳转的也还是another.com/abc
而非想象中的another.com/abc?aa=bb
;所以我就很疑惑,这到底是本身就是这样的设计,还是我的设置有问题?如果本身设计就是这样,那未免有点太鸡肋了……