一、檢查apache虛擬主機(jī)模塊
apache要配置虛擬主機(jī),就需要先查看apache是否編譯vhost_alias_module模塊。當(dāng)然apache默認(rèn)是已經(jīng)編譯該模塊的,我們可以通過(guò)以下命令查看是否已經(jīng)編譯模塊,如下:
/usr/local/apache2/bin/apachectl -M
二、開(kāi)啟apache虛擬主機(jī)功能
要開(kāi)啟apache虛擬主機(jī)功能,我們需要修改apache配置文件http.conf。打開(kāi)apache的安裝目錄,找到httpd.conf文件,去掉Include conf/extra/httpd-vhosts.conf前的#。如下:
vi httpd.conf
該行的作用是,把conf/extra/目錄下的httpd-vhosts.conf文件導(dǎo)入虛擬主機(jī)配置中。
下面我們所有有關(guān)虛擬主機(jī)的配置都在httpd-vhosts.conf文件中進(jìn)行。如下:
apache虛擬主機(jī)配置主要分為三種,分別是根據(jù)IP地址、根據(jù)端口、根據(jù)域名。
這三種虛擬主機(jī),我們主要講解基于域名的虛擬主機(jī)。基于IP與基于端口在生產(chǎn)環(huán)境中使用的比較少,我們?cè)诖酥淮笾轮v解其配置。
注意在此之前,我們還要修改httpd.conf文件把有關(guān)目錄訪問(wèn)權(quán)限的配置選項(xiàng)去掉。否則在訪問(wèn)虛擬主機(jī)時(shí),會(huì)報(bào)403錯(cuò)誤。如下:
httpd.conf文件去掉Order deny,allow和Deny from all行,修改如下:
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
值得注意的是,當(dāng)我們?yōu)閍pache啟用虛擬主機(jī)之后,那么所有的用戶(hù)請(qǐng)求都會(huì)交由對(duì)應(yīng)的虛擬主機(jī)來(lái)處理。如果apache找不到對(duì)應(yīng)的虛擬主機(jī),則會(huì)把該請(qǐng)求交給配置文件中排在最前面的虛擬主機(jī)來(lái)處理。
同時(shí)如果配置基于域名的虛擬主機(jī),我們必須要啟用NameVirtualHost *:80行。如下:
三、httpd-vhosts.conf文件詳解
httpd-vhosts.conf文件內(nèi)容大致如下:
NameVirtualHost *:80
<VirtualHost *:80>
ServerAdmin webmaster@dummy-host.example.com
DocumentRoot "@@ServerRoot@@/docs/dummy-host.example.com"
ServerName dummy-host.example.com
ServerAlias www.dummy-host.example.com
ErrorLog "logs/dummy-host.example.com-error_log"
CustomLog "logs/dummy-host.example.com-access_log" common
</VirtualHost>
NameVirtualHost指定虛擬主機(jī)所使用的IP地址或域名,但是最好是IP地址。使用基于域名的虛擬主機(jī)時(shí),NameVirtualHost是必要的指令。NameVirtualHost可以定義多個(gè)。所有符合NameVirtualHost或<VirtualHost>標(biāo)簽定義的請(qǐng)求,都會(huì)被作為虛擬主機(jī)處理,而主服務(wù)器將不理會(huì)。NameVirtualHost定義了而<VirtualHost>標(biāo)簽沒(méi)有定義的的請(qǐng)求,服務(wù)器會(huì)找不到相應(yīng)的虛擬主機(jī)而將無(wú)法處理。所以每個(gè)NameVirtualHost定義的參數(shù)至少要有一個(gè)<VirtualHost>相匹配。
新聞熱點(diǎn)
疑難解答
圖片精選