用Apache實現虛擬主機服務

- 中國WEB開發者網絡 (http://www.webasp.net)
-- 技術教程 (http://www.webasp.net/article/)
--- 用Apache實現虛擬主機服務 (http://www.webasp.net/article/12/11550.htm)
-- 作者:未知
-- 發佈日期: 2004-07-01
什麼是虛擬主機服務

所謂的虛擬主機服務就是指將一台機器虛擬成多台WEB服務器。舉個例子來說,一家公司想從事提供主機代管服務,它為其它企業提供WEB服務。那麼它肯定不是為每一家企業都各準備一台物理上的服務器,而是用一台功能較強大的大型服務器,然後用虛擬主機的形式,提供多個企業的WEB服務,雖然所有的WEB服務就是這台服務器提供的,但是讓訪問者看起來卻是在不同的服務器上獲得WEB服務一樣。

具體地說,就是,我們可以利用虛擬主機服務將兩個不同公司www.company1.com與www.company2.com的主頁內容都存放在同一台主機上。而訪問者只需輸入公司的域名就可以訪問到它想得到的主頁內容。

用Apache設置虛擬主機服務通常可以採用兩種方案:基於IP地址的虛擬主機和基於名字的虛擬主機,下面我們分別介紹一下它們的實現方法。以便大家在具體的應用中能夠選擇最合適的實現方法。

設置實現基於IP地址的虛擬主機服務


實現前提
 
這種方式需要在機器上設置IP別名,也就是在一台機器的網卡上綁定多個

IP地址去為多個虛擬主機服務。而且要使用這項功能還要確定在你的LINUX內核中必須支持IP別名的設置,否則你還必須重新編譯內核。

下面舉一個擁有兩個虛擬主機的服務設置,以供參考。

2.配置步驟

假設,我們用來實現虛擬主機服務的機器,首先已經為自己提供了WEB服務,現在將為新的一家公司www.company1.com提供虛擬主機服務。

規劃IP地址:為虛擬主機申請新的IP地址。(假設本機IP地址為202.101.2.1)
 
  Www.company1.com 202.101.2.2


2) 讓ISP作好相應的域名解析工作。

3) 為網卡設置IP別名:

  /sbin/ifconfig eth0:0 202.101.2.2 netmask 255.255.255.0

4) 重新設置「/etc/httpd/conf/httpd.conf」,在文件中加入:

ServerAdmin webmaster@yourdomain.com

DocumentRoot /home/httpd/www.company1.com

ServerName www.company1.com

ErrorLog /var/log/httpd/www.company1.com/error.log


5)建立相應的目錄。

  mkdir /home/httpd/www.company1.com

mkdir /var/log/httpd/www.company1.com/error.log
 

6)將相應的主頁內容存放在相應的目錄中即可。

3.不利因素

這種虛擬主機的實現方法有一個嚴重的不足,那就是,每增加一個虛擬主機,就必須增加一個IP地址。而由於IP地址空間已經十分緊張,所以通常情況下是無法取得這麼多的IP地址的。而且從某種意義上說,這也是一種IP地址浪費。

設置實現基於名字的虛擬主機服務

而基於名字的虛擬主機服務,是比較適合使用的一種方案。因為它不需要更多的IP地址,而且配置簡單,無須什麼特殊的軟硬件支持。現代的瀏覽器大都支持這種虛擬主機的實現方法。當然,這也就是指一些早期的客戶端瀏覽器也許不支持這種虛擬主機的實現方法。

正是以上原因,我們沒有理由不使用基於名字的虛擬主機服務而使用基於IP地址的虛擬主機服務。配置基於名字的虛擬主機服務需要修改配置文件:「/etc/httpd/conf/httpd.conf」,在這個配置文件中增加以下內容。

  NameVirtualHost 202.101.2.1

ServerAdmin webmaster@yourdomain.com

DocumentRoot /home/httpd/www.company1.com

ServerName www.company1.com

ErrorLog /var/log/httpd/www.company1.com/error.log

ServerAdmin webmaster@yourdomain.com

DocumentRoot /home/httpd/www.company2.com

ServerName www.company2.com

ErrorLog /var/log/httpd/www.company2.com/error.log


也就是在基於IP地址的配置基礎上增加一句:NameVirtualHost 202.101.2.1而已。在本例中,為了體現只需要增加一次,所以特別地設置了兩個虛擬主機服務。

最後也是建立相應的目錄,將主頁內容放到相應的目錄中去就可以了。

webasp.net