Apache HTTP Server 版本2.2
就像它的名字"基于IP"所暗示的那样,这样的服务器中每个基于IP的虚拟主机必须拥有不同的IP地址。可以通过配备多个真实的物理网络接口来达到这一要求,也可以使用几乎所有流行的操作系统都支持的虚拟界面来达到这一要求(详情请参见您的系统文档,这种功能一般被称作"IP别名",一般用"ifconfig"命令来进行设置)。
有两种配置方法来使apache支持多主机:为每个虚拟主机运行不同的httpd
守护进程;或者用同一个守护进程来支持所有虚拟主机。
以下情况使用多个守护进程:
User
, Group
, Listen
, ServerRoot
设置。Listen
一个"通配符型"地址或一个特定的地址。所以不管出于什么原因,如果您需要侦听一个特定的地址,您就必须同时侦听所有特定的地址。(尽管可以让一个httpd
侦听N-1个地址,而让另一个侦听剩下的地址)以下情况使用单一守护进程:
为每个虚拟主机创建一个不同的httpd
安装。每次安装都在配置文件中使用Listen
指令指定守护进程伺服的IP地址(或虚拟主机)。比如:
Listen www.smallco.com:80
建议您使用IP地址来取代域名(理由请参见关于DNS和Apache)。
在这种情况下,单一的httpd
将伺服所有对主服务器和虚拟主机的请求。而配置文件中的VirtualHost
指令将为每个虚拟主机配置不同的ServerAdmin
, ServerName
, DocumentRoot
, ErrorLog
, TransferLog
, CustomLog
。例如:
<VirtualHost www.smallco.com>
ServerAdmin [email protected]
DocumentRoot /groups/smallco/www
ServerName www.smallco.com
ErrorLog /groups/smallco/logs/error_log
TransferLog /groups/smallco/logs/access_log
</VirtualHost>
<VirtualHost www.baygroup.org>
ServerAdmin [email protected]
DocumentRoot /groups/baygroup/www
ServerName www.baygroup.org
ErrorLog /groups/baygroup/logs/error_log
TransferLog /groups/baygroup/logs/access_log
</VirtualHost>
建议您使用IP地址来取代域名(理由请参见关于DNS和Apache)。
除了创建进程的指令和其他一些指令外,几乎所有的配置指令都能用于<VirtualHost>
指令中。您可以使用指令索引在作用域中查询一个指令是否可以用于<VirtualHost>
指令。
如果使用了suEXEC包装,那么SuexecUserGroup
指令也可以在<VirtualHost>
段中使用。
安全警示:当指定日志文件时,请记住有安全风险。一些别有用心的人会在那个目录拥有写权限。请参见安全方面的提示获取详情。