淺談正向代理和反向代理

前言

  最近多次聽說正向代理和反向代理技術原理,剛好也在學nginx這一實現反向代理的服務器內容,下面就簡單地談一談我對正向代理和反向代理的理解。

什麼是代理?

  說到代理,我們就要明確代理的概念,我認爲代理就是一個代表,一個渠道。

  這就涉及到兩個角色,被代理對象(服務端),目標對象(客戶端)。被代理對象通過代理讓目標對象完成一些操作的過程就是代理過程。我們舉個簡單的例子:種蔬菜的農民爲被代理對象,買蔬菜的大媽爲目標對象,代理爲蔬菜店,大媽通過蔬菜店買到蔬菜的過程就是代理(有種中間商的感覺)

正向代理

  在講解反向代理之前,我們先來了解下正向代理,正向代理是最爲常見的代理模式。

概念

  一個位於客戶端和原始服務器之間的代理服務器,爲了從原始服務器取得內容,客戶端向代理髮送一個請求並制定目標(原始服務器),然後代理向原始服務器轉發請求並將獲得的內容返回給客戶端,客戶端才能使用正向代理。我們平時說的代理就是指正向代理。 

範例

  一、我們在某些情況下需要訪問國外的網站,但是由於網絡因素,我們在瀏覽器是無法直接訪問到國外的網站的,這時候,我們可能會利用某些工具找到一個可以訪問國外網站的代理服務器,我們發送請求到代理服務器,代理服務器帶着我們的請求去訪問國外網站,並將訪問到的數據返回給我們。

  二、A想向C借錢,但是由於某種原因,A無法直接向C借錢,因此,A找來了B,讓B代替自己向C借錢,這樣A就拿到了C的錢,B在這過程中扮演代理人的角色。

範例解釋

  上面所說的兩個例子的模式就是正向代理模式,正向代理最大的特點是客戶端非常要訪問的服務器地址;服務器只清楚請求來自哪個代理服務器,而不清楚來自哪個具體的客戶端;正向代理模式屏蔽或者隱藏了真實客戶端信息,它代理的是客戶端。

  例子1的國外網站服務器無法得知真實客戶端(即我們使用的機器)的信息,例子2的C也不知道A的存在。

 

反向代理

  反向代理模式跟正向代理還是有很大的區別。

概念

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

範例

  一、一個大型的日訪問量極大的網站(某寶,某東),由於每天同時訪問的人數超過了單個服務器所能夠承受的範圍,所以這時候新的技術應運而生,就是我們常聽說的“分佈式部署”。也就是通過部署多臺服務器來解決訪問人數限制的問題,解決之前單服務器壓力過大的問題。我們向網站發送請求,代理服務器將我們的請求進行運算,然後發送到某寶某東的某個服務器上,然後將請求數據結果返回。

 二、A向B借錢,B沒有拿自己的錢,而是悄悄地向C借錢,拿到錢之後再交給A,A以爲是B的錢,他並不知道C的存在。 

範例解釋

客戶端給服務器發送的請求,代理服務器接收到之後,按照一定的規則分發給了後端的業務處理服務器進行處理了。此時~請求的來源也就是客戶端是明確的,但是請求具體由哪臺服務器處理的並不明確了,此時代理服務器扮演的就是一個反向代理角色。客戶端是無感知代理的存在的,反向代理對外都是透明的,訪問者並不知道自己訪問的是一個代理。反向代理,"它代理的是服務端",主要用於服務器集羣分佈式部署的情況下,反向代理隱藏了服務器的信息。

例子1的用戶(客戶端)並不知道具體是由哪個服務器完成請求操作,例子2中的A的錢是B給的,但是B的錢從何而來,它也不清楚,即A不知道C的存在。

 

二者區別

  

圖解:

在正向代理中,Proxy(代理)和Client(客戶端)同屬於一個LAN(圖中方框內),隱藏了客戶端信息;

在反向代理中,Proxy(代理)和Server(服務器)同屬於一個LAN(圖中方框內),隱藏了服務端信息;

實際上,Proxy在兩種代理中做的事情都是替服務器代爲收發請求和響應,不過從結構上看正好左右互換了一下,所以把後出現的那種代理方式稱爲反向代理了。

 

正向代理的作用

    1. 訪問原來無法直接訪問的資源,通過代理訪問 
    2. 作爲中轉站,用作緩存,加速訪問速度 
    3. 對客戶端訪問授權,上網進行認證 
    4. 代理可以記錄用戶訪問記錄(上網行爲管理),對外隱藏用戶信息

反向代理的作用

    1. 可以採集策略,分配到指定的服務器,保護內網安全 
    2. 負載均衡,能夠使各服務器間的壓力分擔出去 
    3. 作爲中轉站,緩存,減少服務器的壓力 

 

 

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