二级域名转发程序实现原理(一)——服务器部分 [转]
功能服务:首先来分析一下二级域名程序所有提供的服务。就是我们来通过国际域名moocky.net,提供诸如abc.moocky.net的域名转发到目的的网站(网址)。这就是二级域名程序所要实现的功能。
虚拟主机:
随着Web服务器的发展,也有原来的一台服务器上只能建立一个Web站点,发展到现在可以建立虚拟主机更加成熟的WebServer。当然这个也和浏览器的发展是分不开的。大家在访问一个站点的时候比如http://www.moocky.net,浏览器首先连接http://www.moocky.net这个网站所对应的服务器,然后再把主机头(也就是域名,http://后面到第一个[/]反斜杠之间之间的部分)给服务器,服务器接收到主机头之后,然后再返回所对应的站点的内容。这也就是基于名称的虚拟主机的原理,当然基于IP的虚拟主机的原理就是通过IP地址来判断相应的Web站点。个默认站点,就是当基于IP的虚拟主机找不到所对应的IP、基于名称的虚拟主机找不到对应的名称是所有访问的站点,就是默认站点了。当然这个也为我们实现域名转发提供可能。
范解析和范绑定:
什么是范解析?比如:我有一个moocky.net的国际顶级域名,那么我需要将“任意字符.moocky.net(*.moocky.net)”,解析到一个固定的ip,如果我们要一个一个的去做那当然是不可能实现的了,那范解析就是用来做这个的。现在的大多数域名注册商都有提供泛解析(也就是大家通常说的范域名解析)。
什么是范绑定?上面刚刚讲了虚拟主机的实现原理,那么范绑定也就是一个范域名到对应站点的一个实现过程。比如刚刚我已经做了*.moocky.net的范解析,接下来要做的就是让*.moocky.net指向到我的站点(注意同一个IP上也可能有很多个主机);对于基于IP的虚拟主机,那我可以告诉你“恭喜你,你不用再作范绑定了。”(为什么呢,自己多想想),但是对于基于名字的虚拟主机要做范绑定,恐怕就是不是人人都知道了。不同的Web服务器范绑定是不同的,我就简单得说一下我所知道的:
Apache的范绑定:
ServerAdmin webmaster@moocky.net
DocumentRoot "/home/moocky/wwwroot"
ServerName www.moocky.net
ServerAlias *.moocky.net
ErrorLog /home/moocky/error_log
CustomLog /home/moocky/access_log common
</VirtualHost>
据我目前所知IIS、TomCat不能绑定范域名(如果你知道怎么绑定请你告诉我一下),但这并不是说IIS、Tomcat就不能实现二级域名程序,别忘了我们还有基于IP的虚拟主机和一个默认站点呢。虽然不能想范绑定那样可以为所有站点都做到,但至少可以勉强实现。
到此,有关二级域名程序实现原理的服务器部分就算是讲完了,不知道你能否明白。