Sun Java logo     上一頁      目錄      索引      下一頁     

Sun logo
Sun Java System Web Proxy Server 4.0.1 管理指南 

第 14 章
使用反向代理伺服器

本章描述如何使用 Proxy Server 做為反向代理伺服器。反向代理伺服器是代理伺服器針對特定替代用法時的名稱。它可以用於防火牆之外,充當外部用戶端的安全內容伺服器,以避免有人在未受監視的情況下從您公司之外直接存取伺服器的資料。它還可以用來進行複製;也就是說,可以在高用量伺服器之前附加多個代理伺服器,以實現負載平衡。本章描述 Proxy Server 在防火牆內外的替代用法。

本章包含下列小節:


反向代理的工作方式

反向代理有兩個模型。一個模型利用 Proxy Server 的安全功能來處理作業事件,而另一個模型則利用其快取功能在高用量伺服器上提供負載平衡。這兩種模型與常規的代理伺服器用法不同的是它們不會嚴格地在防火牆上作業。

代理伺服器是伺服器的替身

若某台內容伺服器帶有必須確保安全的敏感資訊,例如信用卡號碼的資料庫,則可以在防火牆之外設定一台代理伺服器做為內容伺服器的替身。當外部用戶端嘗試存取內容伺服器時,其會被傳送至代理伺服器。真正的內容安全地儲存在防火牆之內的內容伺服器中。代理伺服器位於防火牆之外,對於用戶端來說就好像內容伺服器一樣。

當用戶端向您的站點發出請求時,請求會進入代理伺服器中。之後,代理伺服器會透過防火牆的特定通道將用戶端的請求傳送給內容伺服器。內容伺服器再透過此通道將結果傳送回代理伺服器。代理伺服器將擷取的資訊傳送給用戶端,好像代理伺服器就是真正的內容伺服器一樣 (請參閱圖 14-1)。若內容伺服器傳回錯誤訊息,則代理伺服器可以截取訊息,並在將訊息傳送至用戶端之前變更列於標頭中的所有 URL。這樣可防止外部用戶端取得內部內容伺服器的重新導向 URL。

透過這種方法,代理伺服器在安全的資料庫與可能的惡意攻擊之間設立了一道額外的屏障。即使攻擊成功 (這幾乎不太可能),攻擊者充其量僅能存取一個作業事件所涉及的資訊,而不能存取整個資料庫。未授權的使用者無法進入真正的內容伺服器,因為防火牆通道僅允許代理伺服器存取。

圖 14-1 反向代理伺服器看起來好像真正的內容伺服器

圖片顯示看起來好像是真正的內容伺服器的反向代理伺服器

可以透過配置防火牆路由器,來允許特定連接埠上的特定伺服器 (在此情況中,代理伺服器位於其指派的連接埠上) 經由防火牆進行存取,而禁止其他機器進出。

安全反向代理

當代理伺服器與另一台機器之間的一個或多個連線使用安全通訊端層 (SSL) 協定來加密資料時,會發生安全反向代理。

安全反向代理有許多用途:

由於加密資料會增加系統經常性耗用,所以安全反向代理會降低每個安全連線的速度。然而,因為 SSL 提供了快取機制,兩連線方可以重複使用之前協商的安全性參數,從而大幅減少之後連線的經常性耗用。

配置安全反向代理伺服器的方法有三種:

用戶端安全連線到代理伺服器。若未授權的使用者很少或幾乎沒有機會存取在代理伺服器與內容伺服器之間交換的資訊,則此分析藍本將是很有效的方式 (請參閱圖 14-2)。

圖 14-2 用戶端安全連線到代理伺服器

圖片顯示用戶端安全連線到代理伺服器

代理伺服器安全連線到內容伺服器。若用戶端位於防火牆之內而內容伺服器位於防火牆之外,則此分析藍本將是很有效的方式。在此分析藍本中,代理伺服器可以做為站點之間的安全通道 (請參閱圖 14-3)。

圖 14-3 代理伺服器安全連線到內容伺服器

圖片顯示代理伺服器安全連線到內容伺服器

如需有關如何設定每種配置的資訊,請參閱設定反向代理伺服器

除了 SSL 之外,代理伺服器還可以使用用戶端認證,這就要求向代理伺服器發出請求的電腦提供憑證 (或身份識別表) 來驗證其身份。

用於負載平衡的代理

您可以在組織中使用多個代理伺服器以平衡 Web 伺服器之間的網路負載。此模型可讓您利用代理伺服器的快取功能建立伺服器池,來實現負載平衡。在此情況下,代理伺服器可以位於防火牆的任意一側。若 Web 伺服器每天接收大量的請求,則可以使用代理伺服器來承擔 Web 伺服器的負載,使網路存取更加有效率。

代理伺服器相當於用戶端請求與真實伺服器之間的媒介。代理伺服器會快取請求的文件。若代理伺服器有多個,DNS 可以採用「循環」選擇其 IP 位址的方式來隨機路由請求。用戶端每次會使用相同的 URL,但請求採用的路由每次可能會經過不同的代理伺服器。

使用多個代理伺服器來處理高用量內容伺服器的請求之優點在於:伺服器可以處理比單獨使用時更繁重的負載,而且會更有效率。在代理伺服器第一次從內容伺服器擷取文件的初始啟動期間之後,內容伺服器的請求數將會大幅減少。

僅有 CGI 請求與偶而發生的新請求必須以各種方式到達內容伺服器。其餘的請求可以由代理伺服器處理。這裡舉個例子。假設向伺服器發出的請求中有 90% 都不是 CGI 請求 (表示其可被快取),內容伺服器每天會接收 2 百萬個符合項目。在此情況下,若連接三個反向代理伺服器,且每個伺服器每天可處理 2 百萬個符合項目,那麼每天總共可以處理 6 百萬個符合項目。有 10% 的請求到達內容伺服器,總共可達每天每個代理伺服器約處理 200,000 個符合項目,總共僅有 600,000 個,這大大提高了效率。符合項目的數目可以從 2 百萬個增至 6 百萬個,而內容伺服器的負載可以相應地從 2 百萬個減至六十萬個。實際的結果要視具體情況而定。

圖 14-5 用於負載平衡的代理伺服器

圖片顯示用於負載平衡的代理伺服器


設定反向代理伺服器

若要設定反向代理伺服器,必須擁有兩個對映:標準對映與反向對映。

假設有一個名為 http://http.site.com/ 的 Web 伺服器,且要為其設定反向代理伺服器。可以呼叫反向代理伺服器 http://proxy.site.com/

應建立標準對映與反向對映,方法如下:

  1. 存取 Server Manager,然後按一下 [URLs] 標籤。
  2. 按一下 [Create Mapping] 連結。將顯示 [Create Mapping] 頁面。
  3. 在出現的頁面中,輸入一個對映的資訊。例如:
  4. 標準對映:

    來源前綴:http://proxy.site.com

    來源目標:http://http.site.com/

  5. 按一下 [OK]。返回頁面並建立第二個對映:
  6. 反向對映:

    來源前綴:http://http.site.com/

    來源目標:http://proxy.site.com/

  7. 若要進行變更,請按一下 [OK]。
  8. 按一下 [OK] 按鈕之後,代理伺服器將會增加一個或多個額外的對映。若要查看對映,請按一下名為 [View/Edit Mappings] 的連結。額外的對映應為以下格式:

    from: /

    to: http://http.site.com/

    這些額外的自動對映針對以一般伺服器形式連接至反向代理伺服器的使用者。第一個對映用於擷取以標準代理伺服器形式連線至反向代理伺服器的使用者。根據設定,通常只有第二個對映是必需的,但同時擁有這兩者並不會使代理伺服器出現問題。


    備註

    若 Web 伺服器有數個 DNS 別名,則每個別名應該有一個對應的標準對應。若 Web 伺服器以其自身的數個 DNS 別名產生重新導向,則每個別名都應有一個對應的反向對映。


CGI 應用程式仍將在原始伺服器上執行,代理伺服器本身不執行 CGI 應用程式。然而,若 CGI 程序檔指示可以快取結果 (藉由發出 Last-modified 或 Expires 標頭來暗示存活時間不為零),則代理伺服器將快取結果。


注意

當為 Web 伺服器創作內容時,請記住,反向代理伺服器也會為這些內容提供服務,所以指向 Web 伺服器上檔案的所有連結都應是相對連結。HTML 檔案中一定不可以有主機名稱參照,也就是說,所有連結是針對頁面的:

/abc/def

而不應是完整合格的主機名稱,例如:

http://http.site.com/abc/def


設定安全反向代理伺服器

設定安全反向代理之前,應該熟悉數位憑證、憑證授權單位與認證。

設定安全反向代理伺服器的程序與設定不安全反向代理伺服器幾乎一樣。唯一的不同點在於您必須指定 HTTPS 做為加密檔案所使用的協定。

以下說明內容將解釋如何根據您選擇的配置分析藍本設定安全反向代理伺服器。為了示範如何設定對映,這些說明內容假設您擁有一個名為 http.site.com 的 Web 伺服器,而且您希望設定一個名為 proxy.site.com 的安全反向代理伺服器。執行這些步驟時,應使用 Web 伺服器與代理伺服器的名稱代替說明內容中使用的範例名稱。

用戶端安全連線到代理伺服器

  1. 存取 Server Manager,然後按一下 [URLs] 標籤。
  2. 按一下 [Create Mapping] 連結。將顯示 [Create Mapping] 頁面。
  3. 在出現的頁面中,使用以下方法設定標準對映與反向對映:
  4. 標準對映:

    來源前綴:https://proxy.mysite.com

    來源目標:http://http.mysite.com/

    反向對映:

    來源前綴:http://http.mysite.com/

    來源目標:https://proxy.mysite.com/

  5. 儲存並套用變更。
  6. 若要查看剛建立的對映,請按一下名為 [View/Edit Mappings] 的連結。


    備註

    只有在代理伺服器以安全模式執行時,此配置才有效。換言之,必須啟用加密且必須在指令行中重新啟動代理伺服器。若要在指令行重新啟動代理伺服器,則請進入代理伺服器目錄並鍵入 ./start


代理伺服器安全連線到內容伺服器

  1. 存取 Server Manager,然後按一下 [URLs] 標籤。
  2. 按一下 [Create Mapping] 連結。將顯示 [Create Mapping] 頁面。
  3. 在出現的頁面中,使用以下方法設定標準對映與反向對映:
  4. 標準對映:

    來源前綴:http://proxy.mysite.com

    來源目標:https://http.mysite.com/

    反向對映:

    來源前綴:https://http.mysite.com/

    來源目標:http://proxy.mysite.com/

  5. 儲存並套用變更。若要查看剛建立的對映,請按一下名為 [View/Edit Mappings] 的連結。

  6. 備註

    只有在內容伺服器以安全模式執行時,此配置才有效。


用戶端安全連線到代理伺服器且代理伺服器安全連線到內容伺服器

  1. 存取 Server Manager,然後按一下 [URLs] 標籤。
  2. 按一下 [Create Mapping] 連結。將顯示 [Create Mapping] 頁面。
  3. 在出現的頁面中,設定如下的標準對映與反向對映:
  4. 標準對映:

    來源前綴:https://proxy.mysite.com

    來源目標:https://http.mysite.com/

    反向對映:

    來源前綴:https://http.mysite.com/

    來源目標:https://proxy.mysite.com/

  5. 儲存並套用變更。若要查看剛建立的對映,請按一下名為 [View/Edit Mappings] 的連結。

    備註

    只有在代理伺服器和內容伺服器以安全模式執行時,此配置才有效。換言之,對於代理伺服器,必須啟用加密且必須在指令行中重新啟動代理伺服器。若要在指令行重新啟動代理伺服器,則請進入代理伺服器目錄並鍵入 ./restart


反向代理伺服器中的虛擬多方主控

虛擬多方主控功能使原始伺服器或這裡的反向代理伺服器能夠回應多個 DNS 別名,就像在這些位址中的每一位址上都安裝了一台不同的伺服器一樣。舉例來說,您可使用下列 DNS 主機名稱:

可將其中的每一項對映至同一 IP 位址 (反向代理伺服器的 IP 位址)。然後您可讓反向代理伺服器根據存取它時所使用的 DNS 名稱發揮不同的功能。

虛擬多方主控功能還可讓您主控單台反向代理伺服器上多個不同的 *domains*。例如:

請注意,您可以將多個本機主機名稱與多個網域全都組合在一個代理伺服器中:

本節包含以下主題:

虛擬多方主控功能的詳細資訊

為使虛擬多方主控功能工作,首先要指定 DNS 主機與網域名稱 (或別名),然後給出一個目標 URL 前綴,傳送給此主機名稱的請求將導向到此 URL。舉例來說,您可以有兩個對映:

對映並不一定要從根到根;您可以在目標 URL 中指定其他的 URL 路徑前綴:

這同樣適用於虛擬網域對映。例如,您可使用:

系統將查看 HTTP "Host:" 標頭,並根據標頭選擇相符的虛擬多方主控對映。若沒有相符的多方主控對映,伺服器將按對映在配置檔中的出現順序繼續查看其他對映,或者若找不到任何符合的項目,伺服器將不執行對映。若沒有符合的項目,代理伺服器一般將以「Proxy denies fulfilling the request」回應。

配置虛擬多方主控
  1. 存取 Server Manager,然後按一下 [URLs] 標籤。
  2. 按一下 [Configure Virtual Multihosting] 連結。將顯示 [Configure Virtual Multihosting] 頁面。
  3. 在 [Source Hostname (alias)] 欄位中,指定此對映所應適用的本機主機名稱 (或 DNS 別名)。
  4. 在 [Source Domain Name] 欄位中,輸入此對映所應適用的本機網域名稱。一般而言,這是您自己網路的網域名稱,除非您想要多方主控多個不同的 DNS 網域。
  5. 在 [Destination URL Prefix] 欄位中,輸入目標 URL 前綴,當主機和網域名稱符合上述規格時,請求將被導向到此 URL。
  6. 若要使用範本,從 [Use This Template] 下拉式清單中選取範本名稱,若不想套用範本,則保持 [NONE] 值不變。
  7. 按一下 [OK]。
  8. 按一下 [Restart Required]。將顯示 [Apply Changes] 頁面。
  9. 按一下 [Restart Proxy Server] 按鈕以套用變更。
  10. 為要建立的每個虛擬多方主控對映重複以上步驟。

所有虛擬多方主控對映都將出現在 [Configure Virtual Multihosting] 頁面的底部。請注意,[Source Hostname (alias)] 和 [Source Domain Name] 欄位會與代理伺服器的連接埠號一起合併成一個常規表示式,用於比對 [Host:] 標頭。

例如,如果使用主機名稱 www、網域名稱 example.com 以及連接埠號 8080,將顯示下列常規表示式:

www(|.example.com)(|:8080)

這將確保比對出使用者可能鍵入或用戶端可能傳送的下列所有可能的組合字串 (某些用戶端軟體可能會忽略連接埠號,即使連接埠號不是 80 形式時亦是如此,因為伺服器顯然是知道自己所偵聽的連接埠號的):

虛擬多方主控的重要注意事項

在配置反向代理伺服器對映之前,必須停用用戶端自動配置功能。這樣做將不會導致任何問題,因為用戶端自動配置功能用於正向代理伺服器作業,而非反向代理伺服器。

[Virtual Multihosting] 功能將建立自動反向對映。換句話說,請不要為使用 [Virtual Multihosting] 頁面輸入的對映建立反向對映。

應使用 obj.conf 中的 virt-map 函數指定虛擬對映。

將依照在 obj.conf 配置檔案中指定的順序比對虛擬對映。若在虛擬對映之前有標準對映、反向對映、常規表示式對映或用戶端自動配置對映,則將首先套用這些對映。同樣,若在虛擬對映中未找到符合的項目,會繼續轉換 obj.conf 中虛擬對映區段之後的下一個對映。

若代理伺服器的連接埠號發生變更,則需要重新建立虛擬多方主控對映,因為他們現在的連接埠號碼是錯誤的。



上一頁      目錄      索引      下一頁     


文件號碼:819-3163。   Copyright 2005 Sun Microsystems, Inc. 版權所有。