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>
此種配置方法,也能夠在本地簡單地進行實驗。apache