記得不久以前,我在面試的時候,有考官問我這個問題。當時我只回答了,在Linux下可以通過虛擬機器主機的方法解決。然而他問在windows平台下如何?時。說實在話,我的確不太清楚。經尋找資料,現將兩種平台上解決這個問題的方法詳述如下:
(一)在windows平台下,IIS 5.0能很好地支援一個IP地址對應多個獨立的網域名稱,這可以通過兩種方法來實現:
⑴設不同的TCP連接埠號碼:你需要分別將各個Web網站的“Web網站”選項中的“TCP連接埠”指向不同的連接埠號碼,再將“主目錄”中的路徑選不同的目錄即可。調用格式如“http://www.abc.com:99”。 ]
⑵設不同的主機頭名:你需要分別將各個Web網站的“Web網站→進階→編輯”中的“主機頭名”一項填入不同的網域名稱(如),再將“主目錄”中的路徑選不同的目錄即可。調用格式如“http://www.bbc.com”。
二)在linux平台下採用虛擬機器主機的方法實現過程:
虛擬機器主機是指採用特殊的軟硬體技術,把一台真正的主機分為若干台主機對外提供服務,每一台虛擬機器主機都可以具有獨立的網域名稱和地址,具有完整的互連網伺服器(WWW、FTP、Email)等功能。虛擬機器主機之間完全獨立,並可由使用者自行管理,可以大大地緩解互連網上IP及伺服器等資源的不足,同時降低使用者的硬體費用、網路維護費用和通訊服務費用。
這裡說的虛擬機器主機是指在一台機器上僅運行一個httpd背景程式支援多個Apache伺服器,如在公司財務部門有一台web伺服器,名為 account.yourdomain.com,同時又想為sales部門建立網站,網站內容也放在該機器上,通過sales.yourdomain.com訪問,這就要用到虛擬機器主機設定。
設定Apache虛擬機器主機通常有兩種方案
一、基於IP的虛擬機器主機
這種方式需要在機器上設定IP別名,象上面的例子,在一台機器的網卡上綁定多個IP地址去服務多個虛擬機器主機。若該機器的IP地址為192.168.11.2(account.yourdomain.com),首先你要設定IP別名(假設用192.168.11.4作為其別名IP)。加下面的行到 /etc/rc.d/rc.local,確保每次啟動後自動運行。
#/sbin/ifconfig eth0:0 192.168.11.4 netmask 255.255.255.0 broadcast / 192.168.11.255 up
#/sbin/route add -host 192.168.11.4 eth0:0
然後你需要設定/etd/httpd/conf/httpd.conf檔案:
《VirtualHost 192.168.11.4》*
ServerAdmin webmaster@yourdomain.com
DocumentRoot /home/httpd/sales.yourdomain.com
ServerName sales.yourdomain.com
ErrorLog /var/log/httpd/sales.yourdomain.com/error_log
TransferLog /var/log/httpd/sales.yourdomain.com/access_log
《/VirtualHost》
然後分別建立目錄 /home/httpd/sales.yourdomain.com, /var/log/httpd/sales.yourdomain.com ,放相應的網站內容到目錄/home/httpd/sales.yourdomain.com下即可,並確保你內部的DNS指定sales.yourdomain.com的A記錄到IP地址192.168.11.4 。
註:這種基於IP的虛擬機器主機有一個缺點,就是你需要更多的IP地址去服務各自的虛擬機器主機,如果你僅僅有一個IP地址,那麼你將可以考慮用基於名字的虛擬機器主機方案。
二、基於名字的虛擬機器主機:
它的優勢就是不需要更多的IP地址,容易配置,不需要其它軟硬體,現代的瀏覽器大多都支援這種方式。與基於IP的虛擬機器主機一樣,你需要編輯檔案/etc/httpd/conf/httpd.conf
NameVirtualHost 192.168.11.2
《VirtualHost 192.168.11.2》
ServerAdmin webmaster@yourdomain.com
DocumentRoot /home/httpd/sales.yourdomain.com
ServerName sales.yourdomain.com
ErrorLog /var/log/httpd/sales.yourdomain.com/error_log
TransferLog /var/log/httpd/sales.yourdomain.com/access_log
《/VirtualHost》
《VirtualHost 192.168.11.2》
ServerAdmin webmaster@yourdomain.com
DocumentRoot /home/httpd/hr.yourdomain.com
ServerName hr.yourdomain.com
ErrorLog /var/log/httpd/hr.yourdomain.com/error_log
TransferLog /var/log/hr.yourdomain.com/access_log
《/VirtualHost》
註: 你需要加NameVirtualHost 指示在最前面,下面依次為各個虛擬機器主機,為了讓它工作,你需要把sales.yourdomain.com, hr.yourdomain.com的DNS 都指向IP地址192.168.11.2
上面的兩種都將工作,如果是在外部網段,在互連網上提供WWW服務,你可能沒有足夠的真實IP地址來支援多個虛擬機器主機,便可用基於名字的虛擬機器主機方案,若是在內部網段上,你有較多的內部保留IP地址,將沒有太大的區別。
來自:http://www.cnitblog.com/wildon/archive/2007/02/06/22728.html