在Apache中配置虚拟主机

假设本机IP是189.223.29.60,在Apache的配置文件 httpd.conf 中加入以下代码:

NameVirtualHost 189.223.29.60
<VirtualHost 189.223.29.60>
ServerName www.britepic.org
DocumentRoot F:/test
</VirtualHost>
<VirtualHost 189.223.29.60>
ServerName www.avnads.cn
DocumentRoot F:/vis
</VirtualHost>

配置完成,那么实际上它是如何运作的呢?

如果你使用的是Windows系统,则系统中有一个hosts文件,浏览器在做“域名解析”的时候会先到这里看一下,如果有IP解析,就不用再向 DNS(Domain Name Server 域名服务器)提出解析申请,这样就会节约大量的时间。

使用记事本打开位于 C:\WINDOWS\system32\drivers\etc 目录下的hosts文件(如果是Win98系统,则位于 C:\WINDOWS 目录下),会看到上面是一些以"#"开头的注释文字,最后一行是:

127.0.0.1       localhost

另起一行,并输入

189.223.29.60      www.britepic.org

保存文件。

此时使用浏览器访问 www.britepic.org ,浏览器首先看一下hosts文件,发现里面已经配置了该域名所对应的IP,就转而访问本机的IP地址。又由于本机设置了Apache在80端口监听,所以Apache会受理这一HTTP请求。

Apache接受到请求之后,发现来自的域名地址是 www.britepic.org ,符合其中一个VirtualHost的ServerName条件,则其根目录(DocumentRoot)就定位到 F:/test 下,这时如果该目录下有一个index.htm文件,就会自动转向访问该文件,浏览器中出现的也就是index.htm的内容。

如果你是一个虚拟主机服务提供商,那么让用户把域名解析到你的服务器IP,分配给他相应的服务器目录空间,然后配置好你的httpd.conf,就OK了

http.conf
RewriteEngine on
RewriteMap lowercase int:tolower
RewriteMap vhost txt:/usr/local/apache/conf/vhostmap.conf
RewriteCond ${lowercase:%{SERVER_NAME}} ^(.+)$
RewriteCond ${vhost:%1} ^(/.*)$
RewriteRule ^/(.*)$ %1/$1

vhostmap.conf文件中加入如下内容
xxx.com.cn /net/vhost/php/www
bbs.xxx.com.cn /net/vhost/php/www/bbs

对应的

/net/vhost/php目录下面建立

www目录就是你的网站 www.avnads.cn 的根

如果再建立一个 www2目录 那就是网站 www2.avnads.cn

或者如果你的是Linux 系统的话 也可以在实现了泛域名解析之后建立一个文件软连接

(windows下面目前还没有找到建立类似的软连接的方法)

相关推荐