1.修改httpd.conf文件
打开apache的安装目录,找到httpd.conf文件,分别去掉下面两行文字前面的#号。
#LoadModule vhost_alias_module modules/mod_vhost_alias.so
#Include conf/extra/httpd-vhosts.conf
上面两行分别表示启用apache的虚拟主机功能和从conf/extra/httpd-vhosts.conf这个文件导入虚拟主机配置
2.httpd-vhosts.conf说明
打开httpd-vhosts.conf文件内容类似如下:
NameVirtualHost *:80
<VirtualHost *:80>
ServerAdmin webmaster@dummy-host.example.com
DocumentRoot "c:/Apache24/docs/dummy-host.example.com"
ServerName dummy-host.example.com
ServerAlias www.dummy-host.example.com
ErrorLog "logs/dummy-host.example.com-error.log"
CustomLog "logs/dummy-host.example.com-access.log" common
</VirtualHost>
上述内容说明如下:
1)NameVirtualHost 指定虚拟主机所使用的IP地址或域名,但是最好是IP地址。使用基于域名的虚拟主机时,NameVirtualHost是必要的指令。NameVirtualHost可以定义多个。
2)所有符合NameVirtualHost或<VirtualHost>标签定义的请求,都会被作为虚拟主机处理,而主服务器将不理会。NameVirtualHost定义了而<VirtualHost>标签没有定义的的请求,服务器会找不到相应的虚拟主机而将无法处理。所以每个NameVirtualHost定义的参数至少要有一个<VirtualHost>相匹配。
3)如果设置NameVirtualHost 或<VirtualHost>为*:80的话,所有针对80端口的请求,都会被虚拟主机处理,请求会根据域名指向某个虚拟主机。如果有来自80端口的请求,而所请求的域名没有被配置为虚拟主机,那将指向第一个虚拟主机。这样主服务器将无法收到来自80端口的任何请求。为此也要为主服务器配置一个虚拟主机。
ServerAdmin 管理员邮箱
DocumentRoot 网站目录 (注意:如果网站目录中的路径有空格,请在路径两端加上双引号)
ServerName 要绑定的域名(必填)
ServerAlias 要绑定的虚拟主机的别名。(可选,如果多个域名,中间以空格分隔,如果没有,则去掉该行)
支持*,?两种通配符,比如 *.abc.com,表示任意一个abc.com的二级域名都可访问。
CustomLog 用户日志文件(可选,如果不需要,则去掉该行)
①基于主机名配置
1.修改系统文件C:\Windows\System32\drivers\etc下面的hosts文件,设置域名映射同一个IP。打开文件在最后添加如下地址:
127.0.0.1 www.demo1.com
127.0.0.1 www.demo2.com
127.0.0.1 www.demo3.com
2.根据上面的地址建立虚拟主机存放网页的根目录
/www/demo1/1.html
/www/demo2/2.html
/www/demo3/3.html
3.修改httpd.conf文件,配置如下:
在现有的web服务器上增加虚拟主机,必须也为现存的主机建造一个<VirtualHost>定义块。其中ServerName和DocumentRoot所包含的内容应该与全局的保持一致,且要放在配置文件的最前面,扮演默认主机的角色。
NameVirtualHost *:80
<VirtualHost *:80>
ServerName *
DocumentRoot /www/
</VirtualHost>
<VirtualHost *:80>
ServerName www.demo1.com
DocumentRoot /www/demo1/
<Directory "/www/demo1">
Options Indexes FollowSymLinks
AllowOverride None
Order allow,deny
Allow from all
</Directory>
</VirtualHost>
<VirtualHost *:80>
ServerName www.demo2.com
DocumentRoot /www/demo2/
<Directory "/www/demo2">
Options Indexes FollowSymLinks
AllowOverride None
Order allow,deny
Allow from all
</Directory>
</VirtualHost>
<VirtualHost *:80>
ServerName www.demo3.com
DocumentRoot /www/demo3/
<Directory "/www/demo3">
Options Indexes FollowSymLinks
AllowOverride None
Order allow,deny
Allow from all
</Directory>
</VirtualHost>
②基于IP
1. 假设服务器有个IP地址为192.168.1.254,使用ifconfig在同一个网络接口eth0上绑定3个IP:
[root@localhost root]# ifconfig eth0:1 192.168.1.250 [root@localhost root]# ifconfig eth0:2 192.168.1.251 [root@localhost root]# ifconfig eth0:3 192.168.1.252
2. 修改hosts文件,添加三个域名与之一一对应:
192.168.1.250 www.demo1.com
192.168.1.251 www.demo2.com
192.168.1.252 www.demo3.com
3. 建立虚拟主机存放网页的根目录,如在/www目录下建立demo1,demo2,demo3文件夹,其中分别存放1.html、2.html、3.html
/www/demo1/1.html
/www/demo2/2.html
/www/demo3/3.html
4.修改httpd-vhosts.conf文件,修改配置如下:<VirtualHost 192.168.1.250:80>
ServerName www.demo1.com
DocumentRoot /www/demo1/
<Directory "/www/demo1">
Options Indexes FollowSymLinks
AllowOverride None
Order allow,deny
Allow from all
</Directory>
</VirtualHost>
<VirtualHost 192.168.1.251:80>
ServerName www.demo2.com
DocumentRoot /www/demo2/
<Directory "/www/demo2">
Options Indexes FollowSymLinks
AllowOverride None
Order allow,deny
Allow from all
</Directory>
</VirtualHost>
<VirtualHost 192.168.1.252:80>
ServerName www.demo3.com
DocumentRoot /www/demo3/
<Directory "/www/demo3">
Options Indexes FollowSymLinks
AllowOverride None
Order allow,deny
Allow from all
</Directory>
</VirtualHost>
③基于端口
1. 修改配置文件
将原来的
Listen 80
改为
Listen
80
Listen 8080
2. 更改虚拟主机设置:
<VirtualHost *:80>
ServerName www.demo1.com
DocumentRoot /www/demo1/
<Directory "/www/demo1">
Options Indexes FollowSymLinks
AllowOverride None
Order allow,deny
Allow from all
</Directory>
</VirtualHost>
<VirtualHost *:8080>
ServerName www.demo2.com
DocumentRoot /www/demo2/
<Directory "/www/demo2">
Options Indexes FollowSymLinks
AllowOverride None
Order allow,deny
Allow from all
</Directory>
</VirtualHost>
最后配置完成之后分别访问相应的地址:www.demo1.com,www.demo2.com,www.demo3.com