通俗易懂的解釋正/反向代理!網友:秒懂

說起Nginx,我們都知道它可以用來做反向代理。那麼,到底什麼是反向代理,對應的正向代理又是什麼呢?這篇文章就帶大家來了解一下。其中反向代理也是系統架構的重要組成部分。

說起代理其本質上可以理解爲中介。當A和B不方便進行交互時,往往會引入一箇中間角色C,那麼C便是中介,便是代理。

正向代理

正向代理服務器通常位於客戶端和服務器之間,類似一個跳板機,通過代理服務器可以訪問到目標服務器。

正向代理時,通常,客戶端發送對目標服務器的請求,代理服務器在中間將請求轉發給目標服務器,並將結果返回給客戶端。

正向代理時客戶端必須要進行一些特別的設置才能使用。

正向代理

比如當我們想訪問谷歌,但無法直接訪問,這就需要先通過一個正向代理服務器,請求到代理服務器,再由代理服務器進行訪問,並把訪問結果進行返回。在客戶看來,相當於直接請求谷歌。

正向代理通常用於如下場景:

  • 訪問原來無法訪問的資源,如google;
  • 使用緩衝特性減少網絡使用率,加速訪問資源;
  • 對客戶端訪問授權,上網進行認證;
  • 代理可以記錄用戶訪問記錄(上網行爲管理);
  • 隱藏客戶端身份(目標者不知道幕後操縱者是誰);

反向代理

反向代理(Reverse Proxy)與正向代理恰好相反,代理服務位於服務器端。

對客戶端來說,反向代理服務器就好像是目標服務器。反向代理服務器接收客戶端發來的請求,然後將其分發到內網的服務器,並將內網服務器返回的結果返回給客戶端。

整個過程客戶端並不會感知到反向代理後面的服務,也不需要客戶端做任何設置,只需要把反向代理服務器當成真正的服務器就行。

反向代理

反向代理的用途:

  • 保護和隱藏原始資源服務器,防止攻擊,通常將反向代理作爲公網訪問地址,Web服務器是內網;
  • 負載均衡,通過反向代理來進行服務器資源的優化處理;
  • 加密和SSL加速;
  • 緩存靜態內容;
  • 壓縮、減速上傳、安全、外網發佈等。

正向代理與反向代理的區別

用途上區分:

  • 正向代理:正向代理用途是爲了在防火牆內的局域網提供訪問internet的途徑。
  • 反向代理:反向代理的用途是將防火牆後面的服務器提供給internet用戶訪問。

安全性區分:

  • 正向代理:正向代理允許客戶端通過它訪問任意網站並且隱蔽客戶端自身,因此必須採取安全措施來確保僅爲經過授權的客戶端提供服務;
  • 反向代理:對外是透明的,訪問者並不知道自己訪問的是代理。對訪問者而言,它以爲訪問的就是原始服務器。

透明代理

透明代理比較類似正向代理的功能,客戶端根本不需要知道有代理服務器的存在,它改變你的request fields(報文),並會傳送真實IP,多用於路由器的NAT轉發中。

比如爲了工作效率或者安全,A公司屏蔽了QQ軟件的使用。公司在內網和外網的中間插入一個透明代理,根據規則抓取請求內容,遇到qq的請求就把它給屏蔽掉,這樣就完成了透明屏蔽。

小結

正向代理和反向代理的區別在於代理的對象不一樣,正向代理的代理對象是客戶端,反向代理的代理對象是服務端。

代理服務器站在客戶端那邊就是正向代理,代理服務器站在原始服務器那邊就是反向代理。

參考文章:
https://blog.csdn.net/u010454030/article/details/78860412
https://juejin.cn/post/6844904064266960903
https://www.cnblogs.com/anker/p/6056540.html
https://blog.csdn.net/qq_28988969/article/details/82982474
https://www.cnblogs.com/taostaryu/p/10547132.html


本文分享自微信公衆號 - Java中文社羣(javacn666)。
如有侵權,請聯繫 [email protected] 刪除。
本文參與“OSC源創計劃”,歡迎正在閱讀的你也加入,一起分享。

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