轉發代理服務器與反向代理服務器

轉發代理服務器與反向代理服務器

    說到代理服務器,大部分人都應該比較熟悉了。記得在學校的時候因爲校園網無法訪問國外網站,因此經常使用代理來訪問國外的網站。但是提到反向代理服務器可能大部分人就比較陌生,對於一般的代理服務器與反向代理服務器的區別估計也不是那麼清楚。

    因工作需要就研究了一下,搞清了是怎麼回事,這裏做個筆記,也爲大家所共享。

    代理服務器通常分爲兩類,即轉發代理(forward proxy)服務器和反向代理(reverse proxy)服務器。轉發代理服務器又通常簡稱爲代理服務器,我們常提到的代理服務器就指的是轉發代理服務器。

轉發代理服務器

    普通的轉發代理服務器是客戶端與原始服務器之間的一箇中間服務器。爲了從原始服務器獲取內容,客戶端發送請求到代理服務器,然後代理服務器從原始服務器中獲取內容再返回給客戶端。客戶端必須專門地配置轉發代理來訪問其他站點,如在瀏覽器中配置代理服務器地址及端口號等。

    轉發代理服務器的一個典型應用就是爲處於防火牆後的內部客戶端提供訪問外部Internet網,比如校園網用戶通過代理訪問國外網站,公司內網用戶通過公司的統一代理訪問外部Internet網站等。轉發代理服務器也能夠使用緩存來緩解原始服務器負載,提供響應速度。

反向代理服務器

    而反向代理服務器則相反,在客戶端來看它就像一個普通的Web服務器。客戶端不要做任何特殊的配置。客戶端發送普通的請求來獲取反向代理所屬空間的內容。反向代理決定將這些請求發往何處,然後就好像它本身就是原始服務器一樣將請求內容返回。

    反向代理服務器的一個典型應用就是爲處於防火牆後的服務器提供外部Internet用戶的訪問。反向代理能夠用於在多個後端服務器提供負載均衡,或者爲較慢的後端服務器提供緩存。此外,反向代理還能夠簡單地將多個服務器映射到同一個URL空間。

  

兩者區別

    兩者的相同點在於都是用戶和服務器之間的中介,完成用戶請求和結果的轉發。主要的不同在於:

  (1)轉發代理的內部是客戶端,而反向代理的內部是服務器。即內網的客戶端通過轉發代理服務器訪問外部網絡,而外部的用戶通過反向代理訪問內部的服務器。

  (2)轉發代理通常接受客戶端發送的任何請求,而反向代理通常只接受到指定服務器的請求。如校園網內部用戶可以通過轉發代理訪問國外的任何站點(如果不加限制的話),而只有特定的請求才發往反向代理,然後又反向代理髮往內部服務器。

    我想現在已經對這個概念比較清晰了吧。



反向代理(Reverse Proxy)方式是指以代理服務器來接受Internet上的連接請求,然後將請求轉發給內部網絡上的服務器;並將從服務器上得到的結果返回給Internet上請求連接的客戶端,此時代理服務器對外就表現爲一個服務器。

               通常的代理服務器,只用於代理內部網絡對Internet的連接請求,客戶機必須指定代理服務器,並將本來要直接發送到Web服務器上的http請求發送到代理服務器中。當一個代理服務器能夠代理外部網絡上的主機,訪問內部網絡時,這種代理服務的方式稱爲反向代理服務。

圖1  反向代理服務器的基本原理

       二  反向代理服務器的工作原理

                    反向代理服務器通常有兩種模型,它可以作爲內容服務器的替身,也可以作爲內容服務器集羣的負載均衡器。Nginx

              1,作內容服務器的替身                     

                     如果您的內容服務器具有必須保持安全的敏感信息,如信用卡號數據庫,可在防火牆外部設置一個代理服務器作爲內容服務器的替身。當外部客戶機嘗試訪問內容服務器時,會將其送到代理服務器。實際內容位於內容服務器上,在防火牆內部受到安全保護。代理服務器位於防火牆外部,在客戶機看來就像是內容服務器。

                   當客戶機向站點提出請求時,請求將轉到代理服務器。然後,代理服務器通過防火牆中的特定通路,將客戶機的請求發送到內容服務器。內容服務器再通過該通道將結果回傳給代理服務器。代理服務器將檢索到的信息發送給客戶機,好像代理服務器就是實際的內容服務器(參見圖 2)。如果內容服務器返回錯誤消息,代理服務器會先行截取該消息並更改標頭中列出的任何 URL,然後再將消息發送給客戶機。如此可防止外部客戶機獲取內部內容服務器的重定向 URL。

                  這樣,代理服務器就在安全數據庫和可能的惡意攻擊之間提供了又一道屏障。與有權訪問整個數據庫的情況相對比,就算是僥倖攻擊成功,作惡者充其量也僅限於訪問單個事務中所涉及的信息。未經授權的用戶無法訪問到真正的內容服務器,因爲防火牆通路只允許代理服務器有權進行訪問。

                 

圖2  反向代理服務器作爲內容服務器的替身

                   可以配置防火牆路由器,使其只允許特定端口上的特定服務器(在本例中爲其所分配端口上的代理服務器)有權通過防火牆進行訪問,而不允許其他任何機器進出。

               2,作爲內容服務器的負載均衡器

                   可以在一個組織內使用多個代理服務器來平衡各 Web 服務器間的網絡負載。在此模型中,可以利用代理服務器的高速緩存特性,創建一個用於負載平衡的服務器池。此時,代理服務器可以位於防火牆的任意一側。如果 Web 服務器每天都會接收大量的請求,則可以使用代理服務器分擔 Web 服務器的負載並提高網絡訪問效率。

                   對於客戶機發往真正服務器的請求,代理服務器起着中間調停者的作用。代理服務器會將所請求的文檔存入高速緩存。如果有不止一個代理服務器,DNS 可以採用“循環複用法”選擇其 IP 地址,隨機地爲請求選擇路由。客戶機每次都使用同一個 URL,但請求所採取的路由每次都可能經過不同的代理服務器。

                   可以使用多個代理服務器來處理對一個高用量內容服務器的請求,這樣做的好處是內容服務器可以處理更高的負載,並且比其獨自工作時更有效率。在初始啓動期間,代理服務器首次從內容服務器檢索文檔,此後,對內容服務器的請求數會大大下降。

圖3  反向代理服務器作爲負載均衡器

 

  1.1 iptables代理服務器(網絡層代理):

       缺點:網絡層代理,沒有緩存功能。

  1.2 squid代理服務器(應用層代理):

       缺點:不能代理所有服務

  1.3 透明代理:可以彌補iptables沒有緩存的功能也可以彌補squid不能實現代理的服務。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章