Apache的虚拟主机设置
一台Web服务器如果只放一个主页,似乎有点浪费。那我们是否可以多放几个主页,给不同的用户提供不同的主页访问呢?当然可以了,这就需要用到Apache的虚拟主机设置了。
Apache的虚拟主机分为三类:基于端口的虚拟主机,基于IP的虚拟主机以及基于域名的虚拟主机。下面,我就开始学习虚拟主机的配置吧。
(1) 基于端口的虚拟主机
Apache提供了基于端口的虚拟主机,这给那些域名和IP地址有限的用户提供了提供多
个主页的可能。基于端口的虚拟主机,顾名思义,就是采用同样的域名或IP地址,但采用不同的端口来实现提供多个主页访问服务。
配置虚拟主机,需要用到Apache配置文件虚拟主机部分。具体说明,可以参考Apache配置文件说明部分。下面,我们来实现基于端口的虚拟主机。我们以域名:www.centos.org为例,采用80和8080两个端口来实现基于端口的虚拟主机。
首先,修改主配置文件,找到以下这行并添加一行:
Listen 80
Listen 8080
这里,让httpd服务监听端口80和8080。否则,配置的虚拟主机将无法正常访问。接下,来修改虚拟主机部分如下:
#NameVirtualHost*:80
ServerAdmin webmaster@dummy-host.example.com
DocumentRoot /var/www/virt1
ServerName www.centos.org
ErrorLoglogs/dummy-host.example.com-error_log
CustomLog logs/dummy-host.example.com-access_logcommon
ServerAdmin webmaster@dummy-host.example.com
DocumentRoot /var/www/virt2
ServerName www.centos.org
ErrorLog logs/dummy-host.example.com-error_log
CustomLoglogs/dummy-host.example.com-access_log common
修改完毕!下面,我们去生成相应目录和主页文件。
#mkdir /var/www/virt1 /var/www/virt2
#echo “This isVirtual Host 1!” >/var/www/virt1/index.html
#echo “This isVirtual Host 2!” >/var/www/virt2/index.html
目录和主要创建完毕,去测试吧。……不,等一下。刚才我们都是以root身份建立的目录和文件,权限肯定有问题,还需要修改权限哦。
#chmod 755 ?R/var/www/virt1 /var/www/virt2
现在一切OK,可以测试了。
#links www.centos.org
This is Virtual Host 1!
#links www.centos.org:8080
This is Virtual Host 2!
OK,测试正确,任务完成。
(2) 基于IP的虚拟主机
基于端口的虚拟主机是对于那些IP地址不宽裕的情况而言的,如果你有充足的IP地址,
那么可以配置基于IP的虚拟主机。这里,我们将使用192.168.0.38和192.168.0.39两个IP地址来实现基于IP的虚拟主机。
首先,修改httpd.conf文件如下:
#NameVirtualHost*:80
ServerAdmin webmaster@dummy-host.example.com
DocumentRoot /var/www/virt1
ServerName www.centos.org
ErrorLoglogs/dummy-host.example.com-error_log
CustomLoglogs/dummy-host.example.com-access_log common
ServerAdmin webmaster@dummy-host.example.com
DocumentRoot /var/www/virt2
ServerName www.centos.org
ErrorLog logs/dummy-host.example.com-error_log
CustomLoglogs/dummy-host.example.com-access_log common
这里,端口都是80,虚拟主机IP地址分别设置为192.168.0.38和192.168.0.39。修改完毕,可以进行测试了。
那么,如果IP地址不充裕,又想实现基于IP的虚拟主机该怎么办呢?这里,我们可以通过一个网卡绑定两个IP地址的方法来实现。首先,可以复制一份网卡的配置文件。
#cp/etc/sysconfig/network-script/ifcfg-eth0/etc/sysconfig/network-script/ifcfg-eth0:1
然后,我们修改ifcfg-eth0:1这个文件的IP地址即可。
# Advanced Micro Devices 79c970
DEVICE=eth0:1
BOOTPROTO=static
BROADCAST=192.168.0.255
HWADDR=00:0C:29:40:1D:A2
IPADDR=192.168.0.38
IPV6INIT=yes
IPV6_AUTOCONF=yes
NETMASK=255.255.255.0
NETWORK=192.168.0.0
ONBOOT=yes
修改完毕后,启动此网卡,或者重启网络服务。
#service networkrestart
Shutting down interfaceeth0: [ OK ]
Shutting down interfaceeth1: [ OK ]
Shutting down loopbackinterface: [ OK ]
Bridging up loopbackinterface: [ OK ]
Bridging up interface eth0: [ OK ]
Bridging up interface eth1: [ OK ]
重启完毕,就可以开始配置基于IP的虚拟主机了。
(3) 基于域名的虚拟主机
如果只有一个IP地址,但是却有多个域名,那么我们可以实现基于域名的虚拟主机。
在下面的实验中,我们将用到以下环境:
IP地址:192.168.0.39
域名:x.centos.org xx.centos.org
首先,我们需要让这两个域名能解析到。域名解析可以使用DNS来实现,由于是基于
域名的虚拟主机,我们只需配置正向解析即可。当然,这里只做实验用,我们采用更为简单的方法,修改/etc/hosts文件如下:
# Do not remove the followingline, or various programs
# that require networkfunctionality will fail.
127.0.0.1 x.centos.org x localhost.localdomain localhost
::1 localhost6.localdomain6 localhost6
192.168.0.39 x.centos.org
192.168.0.39 xx.centos.org
修改完毕后,我们将本机DNS设置为192.168.0.39。然后,我们来进行基于域名的虚拟主机配置。首先,修改httpd.conf文件如下:
NameVirtualHost192.168.0.39:80
ServerAdmin webmaster@dummy-host.example.com
DocumentRoot /var/www/virt1
ServerName x.centos.org
ErrorLoglogs/dummy-host.example.com-error_log
CustomLoglogs/dummy-host.example.com-access_log common
ServerAdmin webmaster@dummy-host.example.com
DocumentRoot /var/www/virt2
ServerName xx.centos.org
ErrorLog logs/dummy-host.example.com-error_log
CustomLoglogs/dummy-host.example.com-access_log common
然后,保存退出,并重启httpd服务,就可以进行测试了。
页:
[1]