多個web網站共用一個外部IP的實現方法

來源:互聯網
上載者:User

記得不久以前,我在面試的時候,有考官問我這個問題。當時我只回答了,在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
 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.