反向代理

反向代理

計算機網路中,反向代理代理伺服器的一種。伺服器根據客戶端的請求,從其關係的一組或多組後端伺服器(如Web伺服器)上獲取資源,然後再將這些資源返回給客戶端,客戶端只會得知反向代理的IP位址,而不知道在代理伺服器後面的伺服器簇的存在[1]。

與前向代理不同,前向代理作為客戶端的代理,將從網際網路上獲取的資源返回給一個或多個的客戶端,服務端(如Web伺服器)只知道代理的IP位址而不知道客戶端的IP位址;而反向代理是作為伺服器端(如Web伺服器)的代理使用,而不是客戶端。客戶端藉由前向代理可以間接訪問很多不同網際網路伺服器(簇)的資源,而反向代理是供很多客戶端都通過它間接訪問不同後端伺服器上的資源,而不需要知道這些後端伺服器的存在,而以為所有資源都來自於這個反向代理伺服器。

反向代理在現時的網際網路中並不少見,而另一些例子,像是CDN、SNI代理等,是反向代理結合DNS的一類延伸套用。

基本介紹

  • 中文名:反向代理
  • 外文名:Reverse Proxy
  • 請求:客戶端
  • 受理:伺服器
工作方式,CDN,代理伺服器,用途,配置方法,比較,

工作方式

通常的代理伺服器,只用於代理內部網路對Internet的連線請求,客戶機必須指定代理伺服器,並將本來要直接傳送到Web伺服器上的http請求傳送到代理伺服器中。由於外部網路上的主機並不會配置並使用這個代理伺服器,普通代理伺服器也被設計為在Internet上搜尋多個不確定的伺服器,而不是針對Internet上多個客戶機的請求訪問某一個固定的伺服器,因此普通的Web代理伺服器不支持外部對內部網路的訪問請求。當一個代理伺服器能夠代理外部網路上的主機,訪問內部網路時,這種代理服務的方式稱為反向代理服務。此時代理伺服器對外就表現為一個Web伺服器,外部網路就可以簡單把它當作一個標準的Web伺服器而不需要特定的配置。不同之處在於,這個伺服器沒有保存任何網頁的真實數據,所有的靜態網頁或者CGI程式,都保存在內部的Web伺服器上。因此對反向代理伺服器的攻擊並不會使得網頁信息遭到破壞,這樣就增強了Web伺服器的安全性。
反向代理方式和包過濾方式或普通代理方式並無衝突,因此可以在防火牆設備中同時使用這兩種方式,其中反向代理用於外部網路訪問內部網路時使用,正向代理或包過濾方式用於拒絕其他外部訪問方式並提供內部網路對外部網路的訪問能力。因此可以結合這些方式提供最佳的安全訪問方式。

CDN

CDN的全稱是Content Delivery Network,即內容分發網路。其基本思路是儘可能避開網際網路上有可能影響數據傳輸速度和穩定性的瓶頸和環節,使內容傳輸的更快、更穩定。通過在網路各處放置反向代理節點伺服器所構成的在現有的網際網路基礎之上的一層智慧型虛擬網路,CDN系統能夠實時地根據網路流量和各節點的連線、負載狀況以及到用戶的距離和回響時間等綜合信息將用戶的請求重新導向離用戶最近的服務節點上。其目的是使用戶可就近取得所需內容,解決 Internet網路擁擠的狀況,提高用戶訪問網站的回響速度。

代理伺服器

如果您的內容伺服器具有必須保持安全的敏感信息,如信用卡號資料庫,可在防火牆外部設定一個代理伺服器作為內容伺服器的替身。當外部客戶機嘗試訪問內容伺服器時,會將其送到代理伺服器。實際內容位於內容伺服器上,在防火牆內部受到安全保護。代理伺服器位於防火牆外部,在外部客戶機看來就像是內容伺服器。
當客戶機向站點提出請求時,請求將轉到代理伺服器。然後,代理伺服器通過防火牆中的特定通路,將客戶機的請求傳送到內容伺服器。內容伺服器再通過該通道將結果回傳給代理伺服器。代理伺服器將檢索到的信息傳送給客戶機,好像代理伺服器就是實際的內容伺服器(參見圖1)。如果內容伺服器返回錯誤訊息,代理伺服器會先行截取該訊息並更改標頭中列出的任何 URL,然後再將訊息傳送給客戶機。如此可防止外部客戶機獲取內部內容伺服器的重定向 URL。
這樣,代理伺服器就在安全資料庫和可能的惡意攻擊之間提供了又一道屏障。與有權訪問整個資料庫的情況相對比,就算是僥倖攻擊成功,作惡者充其量也僅限於訪問單個事務中所涉及的信息。未經授權的用戶無法訪問到真正的內容伺服器,因為防火牆通路只允許代理伺服器有權進行訪問。
圖1 反向代理伺服器就像是真正的內容伺服器
反向代理伺服器就像是真正的內容伺服器反向代理伺服器就像是真正的內容伺服器
圖1
可以配置防火牆路由器,使其只允許特定連線埠上的特定伺服器(在本例中為其所分配連線埠上的代理伺服器)有權通過防火牆進行訪問,而不允許其他任何機器進出。
安全反向代理 當代理伺服器與其他機器之間有一個或多個連線使用安全套接字層(SSL) 協定加密數據時,即會進行安全反向代理。

用途

安全反向代理有許多用途:
可以提供從防火牆外部代理伺服器到防火牆內部安全內容伺服器的加密連線。
可以允許客戶機安全地連線到代理伺服器,從而有利於安全地傳輸信息(如信用卡號)。
安全反向代理會造成各安全連線因加密數據所涉及的系統開銷而變慢。但是,由於 SSL 提供了高速快取機制,所以連線雙方可以重複使用先前協商的安全參數,從而大大降低後續連線的系統開銷。

配置方法

配置安全反向代理伺服器的方法有三種:
Secure client to proxy。如果未經授權的用戶很少或根本沒有機會訪問代理伺服器與內容伺服器之間交換的信息,則此方案很有效(參見圖2)。
圖 2 客戶機安全連線到代理伺服器
反向代理
圖2
Secure proxy to content server。如果客戶機在防火牆外部而內容伺服器在防火牆內部,則此方案很有效。在此方案中,代理伺服器可以充當站點之間的安全通道(參見圖3)
圖 3 代理伺服器安全連線到內容伺服器
反向代理
圖3
Secure client to proxy and secure proxy to content server。如果需要保護伺服器、代理伺服器和客戶機三者間所交換信息的安全,則此方案很有效。在此方案中,代理伺服器既可起到站點間安全通道的作用,又可增加客戶機驗證的安全性(參見圖4)。
圖 4 客戶機安全連線到代理伺服器並且代理伺服器安全連線到內容伺服器
反向代理
圖4
有關如何設定上述每種配置的信息,參見設定反向代理伺服器。
除了 SSL 之外,代理伺服器還可以使用客戶機驗證,這種方法要求向代理伺服器提出請求的計算機提供證書(或標識表單)以核實其身份。

比較

下面將對幾種典型的代理服務作一個簡單的比較。在網路上常見的代理伺服器有三種:
1. 標準的代理緩衝伺服器
一個標準的代理緩衝服務被用於快取靜態的網頁(例如:html檔案和圖片檔案等)到本地網路上的一台主機上(即代理伺服器)。當被快取的頁面被第二次訪問的時候,瀏覽器將直接從本地代理伺服器那裡請求數據而不再向原web站點請求數據。這樣就節省了寶貴的網路頻寬,而且提高了訪問速度。但是,要想實現這種方式,必須在每一個內部主機的瀏覽器上明確指明代理伺服器的IP位址和連線埠號。客戶端上網時,每次都把請求送給代理伺服器處理,代理伺服器根據請求確定是否連線到遠程web伺服器獲取數據。如果在本地緩衝區有目標檔案,則直接將檔案傳給用戶即可。如果沒有的話則先取回檔案,先在本地保存一份緩衝,然後將檔案發給客戶端瀏覽器。
2. 透明代理緩衝伺服器
透明代理緩衝服務和標準代理伺服器的功能完全相同。但是,代理操作對客戶端的瀏覽器是透明的(即不需指明代理伺服器的IP和連線埠)。透明代理伺服器阻斷網路通信,並且過濾出訪問外部的HTTP(80連線埠)流量。如果客戶端的請求在本地有緩衝則將緩衝的數據直接發給用戶,如果在本地沒有緩衝則向遠程web伺服器發出請求,其餘操作和標準的代理伺服器完全相同。對於Linux作業系統來說,透明代理使用Iptables或者Ipchains實現。因為不需要對瀏覽器作任何設定,所以,透明代理對於ISP(Internet伺服器提供商)特別有用。
3. 反向代理緩衝伺服器
反向代理是和前兩種代理完全不同的一種代理服務。使用它可以降低原始WEB伺服器的負載。反向代理伺服器承擔了對原始WEB伺服器的靜態頁面的請求,防止原始伺服器過載。它位於本地WEB伺服器和Internet之間,處理所有對WEB伺服器的請求,阻止了WEB伺服器和Internet的直接通信。如果網際網路用戶請求的頁面在代理伺服器上有緩衝的話,代理伺服器直接將緩衝內容傳送給用戶。如果沒有緩衝則先向WEB伺服器發出請求,取回數據,本地快取後再傳送給用戶。這種方式通過降低了向WEB伺服器的請求數從而降低了WEB伺服器的負載。

相關詞條

熱門詞條

聯絡我們