[Linux]Apache配置虚拟主机

时间:2021-02-26 19:49:53
Apache 配置虚拟主机的方式很多,种类也很多,主要分为两类:
 
基于名称的虚拟主机 (每个 IP 多个站点)
基于 IP 的虚拟主机 (每个 IP 一个站点)
基于名称的虚拟主机:  www.2cto.com  
windows下  Apache 的配置文件 conf/httpd.conf 中加载 虚拟主机配置文件  /extra/httpd-vhosts.conf
找到 Include "conf/extra/httpd-vhosts.conf" 取消注释即可。
现在,到httpd-vhosts.conf中,开始配置我们的虚拟主机。
假设 我们有两个不同的站点在同一apache服务器上,www.a.com  和 www.b.com 都指向 同一ip :***.***.***
我们希望 www.a.com访问网站 a,目录为 /htdocs/a  
              www.b.com访问网站 b,目录为 /htdocs/b
httpd-vhosts.conf 代码如下:
01
NameVirtualHost *:80  //指定所有的ip 端口访问
02
<VirtualHost *:80>
03
        ServerName www.a.com
04
        DocumentRoot "X:/htdocs/a"
05  www.2cto.com  
        <Directory "X:/htdocs/a"> //如果不添加,这会出现  AccessForbidden
06
                Options Indexes FollowSymLinks
07
                AllowOverride All //默认为 AllowOverride None 此处修改为 All 目的是可以访问 .htaccess
08
                Order allow,deny
09
                Allow from all
10
        </Directory>
11
</VirtualHost>
12
 
13
<VirtualHost *:80>
14
        ServerName www.b.com
15
        DocumentRoot "X:/htdocs/b"
16
        <Directory "X:/htdocs/b">
17
                Options Indexes FollowSymLinks
18
                AllowOverride None
19  www.2cto.com  
                Order allow,deny
20
                Allow from all
21
        </Directory>
22
</VirtualHost>
 
至此,你的配置应该已经结束了。但是先别急着重启服务器,先使用httpd -S 命令来看看apache是如何解析的吧。如果修改了httpd.conf 文件,请使用 httpd -t命令。
 
 如果你看到
1
default server www.a.com(F:/apache/conf/extra/httpd-vhosts.conf:46)
2
 
3
 port 80 namevhost www.a.com(F:/apache/conf/extra/httpd-vhosts.conf:46
4
 
5
 port 80 namevhost www.b.com (F:/apache/conf/extra/httpd-vhosts.conf:57
6  www.2cto.com  
 Syntax OK
那么,去重启服务器后,访问 www.a.com 吧。他会解析 a目录下的网站了。
 
如果你没有域名而只是想在本地测试下效果的话,很简单,在你的hosts文件中加上
1
127.0.0.1  www.a.com
2
127.0.0.1  www.b.com
这样就可以了。
基于Ip的大家可以试试把* 修改为ip看看。