Apache虚拟主机设置

Apache虚拟主机设置很简单。打开conf文件夹下的httpd.conf,直接拉到最下面就是虚拟主机的配置说明,我们可以直接删掉“#”号(#是配置的文件的注释,表明该行没有生效)或者自己添加虚拟主机。其实Apache虚拟主机设置分为两种,基于名称的虚拟主机和基于IP的虚拟主机,这两种方式略有不同。

一.什么是基于名称的虚拟主机?在单独IP的情况下,Apache下可以建立多个虚拟主机,并通过不同的域名来访问不同的虚拟主机。举个例子,加入你在自己的电脑上搭建了Apache服务器,并准备测试多个网站程序,那么你可以修改本地电脑的host的文件,windows下host文件在C:\\windows\system32\drivers\etc\host 我想用linux主机的都应该知道这个文件在哪里我就不多说了。把你准备想用的域名添加到host里面,格式如下

127.0.0.1   www.nameA.com

127.0.0.1   www.nameB.com

然后在Apache配置文件后直接追加

NameVirtualHost 127.0.0.1
<VirtualHost 127.0.0.1>
DocumentRoot D:/nameA
ServerName www.nameA.com
</VirtualHost>

<VirtualHost 127.0.0.1>
DocumentRoot D:/nameB
ServerName www.nameB.com
</VirtualHost>

这样两个虚拟名称的虚拟主机就建立好了。并可以通过不同的域名来访问不同的主机。

二.可能有的童鞋要问“我有自己的域环境有自己的DNS服务器,可不可以不修改Host文件而通过DNS服务器来解析?”

下面介绍如何在Apache上设置基于IP的虚拟主机。首先在自己的DNS服务器上添加区域,比如ipA.com和ipB.com。分别在区域中设置A记录和别名,假如你的Apache主机有2个IP192.168.0.10和192.168.0.20,那么分别分配给ipA.com和ipB.com(注意:如果没有多个IP也可以设置成相同的IP),设置好DNS服务器后,在Apache配置文件后追加:

NameVirtualHost 127.0.0.1
<VirtualHost www.ipA.com>
DocumentRoot D:/ipA
ServerName www.ipA.com
</VirtualHost>

<VirtualHost www.ipB.com>
DocumentRoot D:/ipB
ServerName www.ipB.com
</VirtualHost>

这样所有加入域中的计算机就可以直接通过ipA.com和ipB.com来访问不同的虚拟主机了。(这种方式不需要修改本地Host文件,如果添加了应先去掉,因为静态解析要优先于动态解析)

你可能会问按照第一种方式设置虚拟主机然后同样在DNS服务器中设置两个虚拟主机的域名同时指向Apache主机地址能不能实现一个ip多个虚拟主机。经过测试我发现这样的设置会导致通过域名只能访问Apache的默认Web目录。

PS:除了以上设置外还要在添加虚拟主机之前建立好虚拟目录,方式如下:

#<Directory “Web路径”>

<Directory “D:/nameA”>
Options Indexes FollowSymLinks Includes ExecCGI
AllowOverride All
Order allow,deny
Allow from all
</Directory>

如果觉得用Apache搭建测试环境复杂麻烦,请参考《Windows下搭建WAMP服务器

《Apache虚拟主机设置》有4个想法

发表评论

电子邮件地址不会被公开。 必填项已用*标注