支持多主机运行可以有两种方式,一种是为每一个主机名运行一个单独的监控程序(Daemon),另一种方式是运行一个监控程序来为所有的虚拟主机服务。
使用多个监控程序主要是为了安全问题,比如公司l和公司2的主页放在同一台机器上,但除了通过WEB浏览外,它们并不想让对方通过其它途径来访问自己的数据,那么必须使用两个Daemon程序,每个程序所属的用户、工作组以及Listen和ServerRoot的设置都不相同。使用多进程监控每一个IP.内存占用会增加,同时也需要更多的文件描述符来标记这些单独的HTTP进程。
系统管理者为每一个虚拟主机创建一个httpd进程,在每个虚拟主机的设置巾使用Listen命令来监听指定的IP地址或主机名,比如;
Listen www.companycom:80
在Listen指令中使用IP地址而不是主机名,因为lP地址减少了服务器启动时域名解析系统( DNS)将主机名转换为IP地址所需的时间。
也可以使用BindAddress指令来监听一个或多个lP地址上的链接情况,指令的地址参数可以是一个lP地址,也可以是一个域名。使用“*”怍为地址参数,表明该指令使服务器监听所有与它链接的IP地址,它是指令的缺省地址。例如:
Bindaddress 202.117.85.2
这条命令便服务器只监听指定的lP地址202.117.85.2。BindAddress指令只能使用一次,如果要使服务器监听多个地址,必须使用Listen指令。在使用多个独立的服务器时.BindAddress可以<ⅥrtualHost>来支持虚拟主机,我们可以将这些指令放在不同的httpd.conf文件中,启动不同的服务器并将命令参数行指向这些文件。
使用单个Daemon程序可以减轻服务器的负担,对经常发生网络堵塞的站点使用这种方法,但服务器需要同时为大量的请求服务,因此使用这种方式在性能上的损失也是明显的。
配置为所有虚拟主机服务的Daemon程序,以下各条指令的值:ServerAdmin、ServerName及CustomLog。下面是个例子:
我们需要在配置文件的VirtualHost内设置DocumentRoot、ErrorLog. FransferLog以
<VirtualHost www.apache.org>
ServerAdmin webmaster@ mail. apache.org
DocumentR oot /group s/apache/www
ServerName www. apache.org
ErrorLog /groups/apachef logs/errorjog
TransferLog /groups/apac:he/logs/access_ log
</VirtuaIHost>
<VirtuaIHost www.lin.org>
ServerAdmin webmaster@mail lin,org
DocumentRoot/groups/lin/www
ServerName www.lin.org
ErrorLog /groups/ lin /logs/error_log
TransferLog /groups/ lnin /logs/access_log
VirtuaIHost>
除以下指令外,几乎所有的指令都可以放置在VirtualHost中,这些指令是:ServerType.StanServers. MaxSpareServers. MinSpareServefS. MaxRequestsPercbikl. BindAddress. Listen,PidFile. TypesConfig. ServerRoot和NameVirtuatHost。