配置apache的多域名解析,需要用到下面的东西:
- C:\WINDOWS\system32\drivers\etc\hosts (DNS域名解析的文件)
- Apache2.2.11\conf\httpd.conf
- Apache2.2.11\conf\extra\httpd-vhosts.conf
上面的文件的用处后面会提到,先讲讲基本情况,客户有两个域名:
这两个域名要绑定某服务器上两个网站,假设目录为:
www.yeboots.com 绑定 yeboots.com
www.yecsc.com 绑定 yecsc.com
首先在apache的httpd.conf中将虚拟主机模块打开,就是将前面的#号去掉:
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_ajp_module modules/mod_proxy_ajp.so
然后引入虚拟主机配置模块:
# Virtual hosts
Include conf/extra/httpd-vhosts.conf
然后在httpd-vhosts.conf中写入以下内容:
NameVirtualHost *:80
#
# VirtualHost example:
# Almost any Apache directive may go into a VirtualHost container.
# The first VirtualHost section is used for all requests that do not
# match a ServerName or ServerAlias in any <VirtualHost> block.
#
<VirtualHost *:80>
ServerAdmin fillbag@hotmail.com
DocumentRoot "D:/htdocs/yeboots.com"
ServerName *.yeboots.com
ErrorLog "logs/yeboots.com-error.log"
CustomLog "logs/yeboots.com-access.log" common
</VirtualHost>
<VirtualHost *:80>
ServerAdmin fillbag@hotmail.com
DocumentRoot "D:/htdocs/yecsc.com"
ServerName yecsc.com
ServerAlias *.yecsc.com
ErrorLog "logs/yecsc.com-error.log"
CustomLog "logs/yecsc.com-access.log" common
</VirtualHost>
便实现了多域名指向服务器不同目录。其中红色部分是实现泛域名解析的方法。
注意点:
- 注意HOST文件中的任意一项,都可能影响到你调试本地的DNS和域名。
- ServerName项对应的内容是网站的域名,即yecsc.com,而www.yecsc.com只是泛域名的其中一种。只需要在ServerAlias中设定*.yecsc.com即可。
- 注意查看每一个域名访问对应的access.log文件,可以查看域名被访问的情况来调试。
- 要确定用户已经进行了域名与IP的绑定!
- 网站不可能访问网站根目录的上级目录中的内容。
- 调整本地HOST文件之后,可以通过ping域名的方法来查看本地DNS是否已经起效。
- 如果通过HOST,httpd.conf和httpd-vhosts.conf三者进行调试之后,仍然有错误的话,一定是这三者某一环节出了问题,而不是任何诡异的其他问题。
推荐网址:
其中有一个问题好长时间没有调试出来,最后找到的原因,就是下图中的第二行:
<!--StartFragment -->
只是掉之前,输入www.yecsc.com,仍然会访问www.yeboots.com,怎么调试都不成功。
注释掉之后,两个网站终于可以各自访问各自的目录了。
所以要非常注意本机HOST文件中对localhost的配置,否则会出莫名奇妙的状况。