Apache配置多個網站的方法

酷越發表於2014-12-03

Apache的虛擬主機是一種允許在同一臺機器上,執行超過一個網站的解決方案。虛擬主機有兩種,一種叫基於IP的(IP-based),另一種叫基於名字的(name-based)。虛擬主機的存在,對使用者來說是透明的。

基於IP的虛擬主機:
對於基於IP的虛擬主機來說,必須為每個虛擬主機配備一個單獨的IP。也就是說你的伺服器必須有多個IP地址。對於這種方式,我們在本地就可以做一個實驗來進行配置。
配置基於IP的虛擬主機,有兩種方法:一是啟動多個apache伺服程式,每個例項使用單獨的配置檔案,一般來說,在同一臺機器上,架設兩個網站,這兩個網站互相之間不希望對方訪問自己的檔案,就使用這種方式,每個apache例項都是用單獨的使用者名稱,組來啟動,並且放到不同的目錄下,這種方式只要在apche的配置檔案中,為Listen命令配置不同的ip即可;
第二種方法是隻啟動一個單一的apache程式,使用VirtualHost指令來為不同的站點,配置不同的值,這種配置方式,我們可以在本地做個試驗的,由於127.0.0.*的所有ip都是指向本機的,所以,我們可以隨便拿兩個出來做實驗,按照如下方式配置apache,之後,在hosts檔案中,將域名繫結到配置的ip上,就可以實現在本地執行多個wp系統的一個配置:
    <VirtualHost 127.0.0.1:80>
        ServerAdmin yourname@domain.com
        DocumentRoot "E:/server110.com/wordpress-latest"
        ServerName server110.com
        ServerAlias www.server110.com
        ErrorLog "logs/wplatest.com-error.log"
        CustomLog "logs/server110.com-access.log" combined
    </VirtualHost>
    <VirtualHost 127.0.0.2:80>
        ServerAdmin yourname@domain.com
        DocumentRoot "E:/server110.com/wordpress-2.9.2"
        ServerName server110.com
        ServerAlias www.server110.com
        ErrorLog "logs/server110.com-error.log"
        CustomLog "logs/server110.com-access.log" combined
    </VirtualHost>

基於名字的虛擬主機:
基於名字的虛擬主機比起基於IP的來說,配置要更加簡單,它只要依靠客戶端傳送的HTTP頭資訊中的HOST欄位來判斷,伺服器到底要服務哪個虛擬主機。一般情況下,還是比價推薦使用這種方式。因為IP資源日漸稀缺,對於一般使用者來說,為一臺伺服器購買多個IP也是成本較高的。
使用這種方式配置時,首先是用NameVirtualHost指令,配置次apache例項監聽的IP地址和埠號,然後使用VirtualHost指令來配置不同的虛擬主機,上述的例子,用這種方式配置的話,配置方法如下(注意,在這種方式中,ServerName是必填欄位):
    NameVirtualHost 127.0.0.1:80
    <VirtualHost *:80>
        ServerAdmin yourname@domain.com
        DocumentRoot "E:/server110.com/wordpress-latest"
        ServerName server110.com
        ServerAlias www.server110.com
        ErrorLog "logs/server110.com-error.log"
        CustomLog "logs/server110.com-access.log" combined
    </VirtualHost>
    <VirtualHost *:80>
        ServerAdmin yourname@domain.com
        DocumentRoot "E:/baidu.com/wordpress-2.9.2"
        ServerName baidu.com
        ServerAlias www.baidu.com
        ErrorLog "logs/baidu.com-error.log"
        CustomLog "logs/baidu.com-access.log" combined
    </VirtualHost>
此種配置方法,也可以在本地簡單地進行實驗。

相關文章