標籤:apach conf 許可權 www apache 訪問 環境 虛擬 clu
轉自:http://www.cnblogs.com/wpjsolo/archive/2012/01/19/2327457.html
以lampp環境為例子,其他環境只是設定檔的路徑不同。
先要在 lampp/etc/httpd.conf ( 這個是Apache 總的設定檔)中,將虛擬路徑的注釋去掉。
#Include etc/extra/httpd-vhosts.conf
使httpd-vhosts.conf檔案起作用,或者直接在httpd.conf中寫配置也可以,但不建議這麼做。
相關的配置有:Listen NameVirtualHost <VirtualHost>
1. Listen 要監聽的連接埠,多個連接埠,要寫多個Listen;否則Apache啟動的時候,不會啟動相應的通訊端。
比如
Listen 80
Listen 8080
2.NameVirtualHost 如果沒有這個,<VirtualHost>標籤就沒什麼作用。
(感謝okiwill的指正,這裡特指基於網域名稱訪問的情況,若是基於IP訪問的,以第一個指定IP的VirtualHost為準,每個IP可以單獨指定)
一個NameVirtualHost 可以對用多個<VirtualHost>,每個<VirtualHost>必須有自己的NameVirtualHost(我猜的)
NameVirutalHost *:80
制定這個主機的IP和連接埠,如果伺服器上有多個IP,就可以制定某個IP的某個連接埠是哪個 主機。
(新版的Apache已經去除了NameVirtualHost 這個配置,因為確實沒什麼用,參數在VirtualHost中都已經指明了)
3 最關鍵的VirtualHost
重要:Apache 在接受到請求時,首先會預設第一個VirtualHost,然後再找匹配的,如果沒有匹配的,就是第一個VirtualHost起作用。
因此在httpd.conf中,將<Dicrectory />(這個是所有目錄的預設配置)
和 <Direcotry /opt/lampp/htdocs>的許可權,都是deny from all.作為預設。
所以,我的第一個VirtualHost是
<VirtualHost *:80>
ServerName *
DocumentRoot </opt/lampp/htdocs/guest>
<Directory /opt/lampp/htdocs/guest>
Order deny,allow
Allow from all
</Direcotry>
<VirtualHost/>
後面的,依次添加就可以
<VirtualHost *:80>
ServerName www.myweb1.com
DocumentRoot </opt/lampp/htdocs/myweb1>
<Directory /opt/lampp/htdocs/myweb1>
Order deny,allow
Allow from all
</Direcotry>
<VirtualHost/>
Apache VirtualHost配置