一、檢查apache虛擬主機模塊
apache要配置虛擬主機,就需要先查看apache是否編譯vhost_alias_module模塊。當然apache默認是已經編譯該模塊的,我們可以通過以下命令查看是否已經編譯模塊,如下:
/usr/local/apache2/bin/apachectl -M
二、開啟apache虛擬主機功能
要開啟apache虛擬主機功能,我們需要修改apache配置文件http.conf。打開apache的安裝目錄,找到httpd.conf文件,去掉Include conf/extra/httpd-vhosts.conf前的#。如下:
vi httpd.conf
該行的作用是,把conf/extra/目錄下的httpd-vhosts.conf文件導入虛擬主機配置中。
下面我們所有有關虛擬主機的配置都在httpd-vhosts.conf文件中進行。如下:
apache虛擬主機配置主要分為三種,分別是根據IP地址、根據端口、根據域名。
這三種虛擬主機,我們主要講解基于域名的虛擬主機?;贗P與基于端口在生產環境中使用的比較少,我們在此只大致講解其配置。
注意在此之前,我們還要修改httpd.conf文件把有關目錄訪問權限的配置選項去掉。否則在訪問虛擬主機時,會報403錯誤。如下:
httpd.conf文件去掉Order deny,allow和Deny from all行,修改如下:
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
值得注意的是,當我們為apache啟用虛擬主機之后,那么所有的用戶請求都會交由對應的虛擬主機來處理。如果apache找不到對應的虛擬主機,則會把該請求交給配置文件中排在最前面的虛擬主機來處理。
同時如果配置基于域名的虛擬主機,我們必須要啟用NameVirtualHost *:80行。如下:
三、httpd-vhosts.conf文件詳解
httpd-vhosts.conf文件內容大致如下:
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指定虛擬主機所使用的IP地址或域名,但是最好是IP地址。使用基于域名的虛擬主機時,NameVirtualHost是必要的指令。NameVirtualHost可以定義多個。所有符合NameVirtualHost或<VirtualHost>標簽定義的請求,都會被作為虛擬主機處理,而主服務器將不理會。NameVirtualHost定義了而<VirtualHost>標簽沒有定義的的請求,服務器會找不到相應的虛擬主機而將無法處理。所以每個NameVirtualHost定義的參數至少要有一個<VirtualHost>相匹配。
新聞熱點
疑難解答