|
|
发表于 2005-6-6 10:07:46
|
显示全部楼层
你看看这篇文章!
假设,我们用来实现虚拟主机服务的机器,首先已经为自己提供了WEB服务,现在将为另一个域名www.xxx.com提供虚拟主机服务。
规划IP地址:为虚拟主机申请新的IP地址。(假设本机IP地址为211.100.6.48),我们为新的虚拟主机申请的IP地址为211.100.6.49。
让ISP作好相应的域名解析工作。
为网卡设置IP别名:
ifconfig eth0:0 211.100.6.49 netmask 255.255.255.0
重新设置“/etc/httpd/conf/httpd.conf”,在文件中加入:
<VirtualHost 211.100.6.49>
ServerAdmin webmaster@xxx.com
DocumentRoot /home/httpd/xxxroot
ServerName www.xxx.com
ErrorLog /var/log/httpd/xxxroot/error.log
</VirtualHost>
建立相应的文档发布目录。(注意,如果需要的话,可能有修改目录和文件属性的操作,以便提供ftp权限和log文件能被服务器写入出错信息)
mkdir /home/httpd/xxxroot
touch /var/log/httpd/xxxroot/error.log
将相应的主页内容存放在相应的目录中即可。
这种方式,每增加一个虚拟主机,就必须增加一个IP地址。而由于IP地址空间已经十分紧张,所以通常情况下是无法取得这么多的IP地址的。从某种意义上说,这也是一种IP地址浪费。同时,你也需要为新的IP地址付费,提高了WEB服务的成本,所以这种方式已经极少采用了。
2. 基于名字的虚拟主机服务
设置基于名字的虚拟主机服务同样非常的简单。它不需要更多的IP地址,无须什么特殊的软硬件支持。现代的浏览器大都支持这种虚拟主机的实现方法。当然,这也就是指一些早期的客户端浏览器也许不支持这种虚拟主机的实现方法。
配置基于名字的虚拟主机服务需要修改配置文件(/etc/httpd/conf/httpd.conf),在这个配置文件中增加以下内容:
NameVirtualHost 192.168.1.52
<VirtualHost 192.168.1.52>
DocumentRoot /home/httpd/xxxroot
ServerName www.xxx.com
</VirtualHost>
<VirtualHost 211.100.6.48>
DocumentRoot /home/httpd/yyyroot
ServerName www.yyy.com
</VirtualHost>
也就是在基于IP地址的配置基础上增加一句:
NameVirtualHost 211.100.6.48而已。在本例中,为了体现只需要增加一次,所以特别地设置了两个虚拟主机服务。
最后也是建立相应的目录,将主页内容放到相应的目录中去就可以了。
在确认已经建立需要的所有目录和文件后,你还需要重启Apache服务器使设置生效。
这里需要注意的是,VirtualHost的参数地址一定要和NameVirtualHost定义的地址相一致,必须保证所有的值严格一致,Apache服务器才承认这些定义是为这个IP地址定义的虚拟主机。此外,定义过NameVirtualHost之后,那么对这个IP地址的访问都被区分不同的虚拟主机进行处理,而对其他IP地址的访问,例如127.0.0.1,才应用前面定义的缺省选项。 |
|