以前一直對正向代理與反向代理的概念模糊不清,其實從數據流向的角度來看,它們并沒有什么區別,都是從client
發出請求,經過proxy
,到達server
,然后server
的響應經過proxy
,回到client
。為何有正反之分,只是對客戶端,代理端,和服務端的劃分不同。通常,正向代理是劃分成 客戶端-代理端
和服務端
,而反向代理正好相反,結構是客戶端
和代理端-服務端
,英文reverse這個詞的意思是指上述結構的反轉,但由于翻譯的原因,到中文就變成了反向代理。
正向代理
正向代理,也簡稱代理,它的工作原理就像一個跳板。
舉例:我是用戶,我訪問不了S網站,但我能訪問一個代理服務器P,但P能訪問S,于是我連接上P,告訴P我需要訪問S,P取回內容,然后返回給我。從網站S的角度,只在代理服務器P訪問時有一次記錄,并不一定知道是用戶的請求,這取決于代理P告不告訴網站S。
結論:正向代理是一個位于客戶端和原始服務器(origin server)之間的服務器,為了從原始服務器取得內容,客戶端向代理發送一個請求并指定目標(原始服務器),然后代理向原始服務器轉交請求并將獲得的內容返回給客戶端。客戶端必須要進行一些特別的設置才能使用正向代理。
反向代理
舉例:用戶想訪問“ http://xxx/readme ”,但xxx上不存在readme內容,它偷偷從另外一個服務器上獲取信息返回給用戶,這一過程用戶并不知情。
結論:反向代理正好相反,對于客戶端而言它就像是原始服務器,并且客戶端不需要進行任何特別的設置。客戶端向反向代理的命名空間(name-space)中的內容發送普通請求,接著反向代理將判斷向何處(原始服務器)轉交請求,并將獲得的內容返回給客戶端,就像這些內容原本就是它自己的一樣。
正反向代理的區別
從用途上來講:正向代理的典型用途是為在防火墻內的局域網客戶端提供訪問Internet的途徑。正向代理還可以使用緩沖特性減少網絡使用率。反向代理的典型用途是將防火墻后面的服務器提供給Internet用戶訪問。反向代理還可以為后端的多臺服務器提供負載平衡,或為后端較慢的服務器提供緩沖服務。另外,反向代理還可以啟用高級URL策略和管理技術,從而使處于不同web服務器系統的web頁面同時存在于同一個URL空間下。
從安全性來講:正向代理允許客戶端通過它訪問任意網站并且隱藏客戶端自身,因此你必須采取安全措施以確保僅為經過授權的客戶端提供服務。反向代理對外都是透明的,訪問者并不知道自己訪問的是一個代理。
最后,打個比方來結束這篇文章:
a,b,c三個人,正向代理是a通過b向c借錢,a知道c的存在 。反向代理是a向b借錢,b又向c借,a不知道c的存在。