Apache HTTP Server 版本2.2
就像它的名字"基于IP"所暗示的那樣,這樣的服務器中每個基于IP的虛擬主機必須擁有不同的IP地址?梢酝ㄟ^配備多個真實的物理網(wǎng)絡接口來達到這一要求,也可以使用幾乎所有流行的操作系統(tǒng)都支持的虛擬界面來達到這一要求(詳情請參見您的系統(tǒng)文檔,這種功能一般被稱作"IP別名",一般用"ifconfig"命令來進行設置)。
有兩種配置方法來使apache支持多主機:為每個虛擬主機運行不同的httpd
守護進程;或者用同一個守護進程來支持所有虛擬主機。
以下情況使用多個守護進程:
User
, Group
, Listen
, ServerRoot
設置。Listen
一個"通配符型"地址或一個特定的地址。所以不管出于什么原因,如果您需要偵聽一個特定的地址,您就必須同時偵聽所有特定的地址。(盡管可以讓一個httpd
偵聽N-1個地址,而讓另一個偵聽剩下的地址)以下情況使用單一守護進程:
為每個虛擬主機創(chuàng)建一個不同的httpd
安裝。每次安裝都在配置文件中使用Listen
指令指定守護進程伺服的IP地址(或虛擬主機)。比如:
Listen www.smallco.com:80
建議您使用IP地址來取代域名(理由請參見關于DNS和Apache)。
在這種情況下,單一的httpd
將伺服所有對主服務器和虛擬主機的請求。而配置文件中的VirtualHost
指令將為每個虛擬主機配置不同的ServerAdmin
, ServerName
, DocumentRoot
, ErrorLog
, TransferLog
, CustomLog
。例如:
<VirtualHost www.smallco.com>
ServerAdmin webmaster@mail.smallco.com
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 webmaster@mail.baygroup.org
DocumentRoot /groups/baygroup/www
ServerName www.baygroup.org
ErrorLog /groups/baygroup/logs/error_log
TransferLog /groups/baygroup/logs/access_log
</VirtualHost>
建議您使用IP地址來取代域名(理由請參見關于DNS和Apache)。
除了創(chuàng)建進程的指令和其他一些指令外,幾乎所有的配置指令都能用于<VirtualHost>
指令中。您可以使用指令索引在作用域中查詢一個指令是否可以用于<VirtualHost>
指令。
如果使用了suEXEC包裝,那么SuexecUserGroup
指令也可以在<VirtualHost>
段中使用。
安全警示:當指定日志文件時,請記住有安全風險。一些別有用心的人會在那個目錄擁有寫權(quán)限。請參見安全方面的提示獲取詳情。