您的位置:首页 > 运维架构 > Apache

在Apache中配置虚拟主机

2008-11-06 23:56 274 查看
假设本机IP是172.23.29.60,在Apache的配置文件 httpd.conf 中加入以下代码:

NameVirtualHost 172.23.29.60

<VirtualHost 172.23.29.60>
ServerName www.test.com
DocumentRoot F:/test
</VirtualHost>

<VirtualHost 172.23.29.60>
ServerName www.vis.com
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

  另起一行,并输入
172.23.29.60 www.test.com

保存文件。

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

Apache接受到请求之后,发现来自的域名地址是 www.test.com ,符合其中一个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.xxx.com.cn 的根

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

或者如果你的是linux 系统的话 也可以在实现了泛域名解析之后建立一个文件软连接
(windows下面目前还没有找到建立类似的软连接的方法)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: