how to config apache's virtual host

设置Apache虚拟主机

一、基于IP的虚拟主机

这种方式需要在机器上设置IP别名,象上面的例子,在一台机器的网卡上绑定多个IP地址去服务多个虚拟主机。若该机器的IP地址为192.168.11.2(account.yourdomain.com),首先你要设置IP别名(假设用192.168.11.4作为其别名IP)。加下面的行到
/etc/rc.d/rc.local,确保每次启动后自动运行。
#/sbin/ifconfig eth0:0 192.168.11.4 netmask 255.255.255.0 broadcast \192.168.11.255 up
#/sbin/route add -host 192.168.11.4 eth0:0
下一步你需要设置/etd/httpd/conf/httpd.conf文件:

<VirtualHost 192.168.11.4> 
  ServerAdmin [email protected] 
  DocumentRoot /home/httpd/sales.yourdomain.com 
  ServerName sales.yourdomain.com 
  ErrorLog /var/log/httpd/sales.yourdomain.com/error_log 
  TransferLog /var/log/httpd/sales.yourdomain.com/access_log 
</VirtualHost> 

接着分别创建目录
/home/httpd/sales.yourdomain.com,
/var/log/httpd/sales.yourdomain.com,放相应的网站内容到目录/home/httpd/sales.yourdomain.com下即可,并确保你内部的DNS指定sales.yourdomain.com的A记录到IP地址192.168.11.4

注:这种基于IP的虚拟主机有一个缺点,就是你需要更多的IP地址去服务各自的虚拟主机,如果你仅仅有一个IP地址,那么你将可以考虑用基于名字的虚拟主机方案。

二、基于名字的虚拟主机:

它的优势就是不需要更多的IP地址,容易配置,不需要其它软硬件,现代的浏览器大多都支持这种方式。与基于IP的虚拟主机一样,你需要编辑文件/etc/httpd/conf/httpd.conf

NameVirtualHost 192.168.11.2 
<VirtualHost 192.168.11.2> 
  ServerAdmin [email protected] 
  DocumentRoot /home/httpd/sales.yourdomain.com 
  ServerName sales.yourdomain.com 
  ErrorLog /var/log/httpd/sales.yourdomain.com/error_log 
  TransferLog /var/log/httpd/sales.yourdomain.com/access_log 
</VirtualHost> 

<VirtualHost 192.168.11.2> 
  ServerAdmin [email protected] 
  DocumentRoot /home/httpd/hr.yourdomain.com 
  ServerName hr.yourdomain.com 
  ErrorLog /var/log/httpd/hr.yourdomain.com/error_log 
  TransferLog /var/log/hr.yourdomain.com/access_log 
</VirtualHost> 


注:你需要加NameVirtualHost 指示在最前面,下面依次为各个虚拟主机,为了让它工作,你需要sales.yourdomain.com, hr.yourdomain.com的DNS都指向IP地址192.168.11.2
上面的两种都将工作,如果是在外部网段,在互联网上提供WWW服务,你可能没有足够的真实IP地址来支持多个虚拟主机,便可用基于名字的虚拟主机方案,若是在内部网段上,你有较多的内部保留IP地址,将没有太大的区别。

ServerAlias:服务器别名,在Apache中可以用于设置虚拟主机接收到个域名,也可以用于接收泛解析的域名。具体的设置方法如下:

三、用于设置虚拟主机接收多个域名

一个虚拟主机常常会接收多个域名解析,比如:一个虚拟主机要同时介绍sanywork.cn, 51684.com两个域名,或者是两个二级域名,如:www.sanywork.cn, www1.sanywork.cn,对于这种情况,可以在用ServerAlias轻松做到,打开apache的设置文件:httpd.conf,在该主机的设置代码中:

<VirtualHost 192.168.1.12>
   ServerName “sanywork.cn” #默认域名;
   ServerAlias 51684.com www1.sanywork.cn #不同域名用空格隔开;
   DocumentRoot “D:\wwwroot\sanywork.cn”
   <Directory “D:\wwwroot\sanywork.cn”>
        Options Indexes FollowSymLinks
        AllowOverride all
    </Directory>
</VirtualHost>

保存httpd.conf文件,重启apche即可生效。

四、 用于接收泛域名解析

一个虚拟主机是可以接收泛域名解析的,也是通过SeverAlias选项设置,通过设置该选项不仅可以接收二级泛域名解析,也可以接收三级、四级泛域名解析,具体设置如下:

<VirtualHost 192.168.11.4>
   ServerName “sanywork.cn” #默认域名;
   ServerAlias *.sanywork.cn #用*表示泛域名,如果要接收三级泛域名解析,可以写成这样:*.my.sanywork.cn;
   DocumentRoot “D:\wwwroot\sanywork.cn”
   <Directory “D:\wwwroot\sanywork.cn”>
       Options Indexes FollowSymLinks
       AllowOverride all
    </Directory
</VirtualHost>

保存httpd.conf文件,重启apche即可生效。

猜你喜欢

转载自wuchengyi.iteye.com/blog/764831