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