通俗易懂的解釋正/反向代理!網(wǎng)友:秒懂
說起Nginx,我們都知道它可以用來做反向代理。那么,到底什么是反向代理,對應的正向代理又是什么呢?這篇文章就帶大家來了解一下。其中反向代理也是系統(tǒng)架構的重要組成部分。
說起代理其本質(zhì)上可以理解為中介。當A和B不方便進行交互時,往往會引入一個中間角色C,那么C便是中介,便是代理。
正向代理
正向代理服務器通常位于客戶端和服務器之間,類似一個跳板機,通過代理服務器可以訪問到目標服務器。
正向代理時,通常,客戶端發(fā)送對目標服務器的請求,代理服務器在中間將請求轉(zhuǎn)發(fā)給目標服務器,并將結果返回給客戶端。
正向代理時客戶端必須要進行一些特別的設置才能使用。

比如當我們想訪問谷歌,但無法直接訪問,這就需要先通過一個正向代理服務器,請求到代理服務器,再由代理服務器進行訪問,并把訪問結果進行返回。在客戶看來,相當于直接請求谷歌。
正向代理通常用于如下場景:
訪問原來無法訪問的資源,如google; 使用緩沖特性減少網(wǎng)絡使用率,加速訪問資源; 對客戶端訪問授權,上網(wǎng)進行認證; 代理可以記錄用戶訪問記錄(上網(wǎng)行為管理); 隱藏客戶端身份(目標者不知道幕后操縱者是誰);
反向代理
反向代理(Reverse Proxy)與正向代理恰好相反,代理服務位于服務器端。
對客戶端來說,反向代理服務器就好像是目標服務器。反向代理服務器接收客戶端發(fā)來的請求,然后將其分發(fā)到內(nèi)網(wǎng)的服務器,并將內(nèi)網(wǎng)服務器返回的結果返回給客戶端。
整個過程客戶端并不會感知到反向代理后面的服務,也不需要客戶端做任何設置,只需要把反向代理服務器當成真正的服務器就行。

反向代理的用途:
保護和隱藏原始資源服務器,防止攻擊,通常將反向代理作為公網(wǎng)訪問地址,Web服務器是內(nèi)網(wǎng); 負載均衡,通過反向代理來進行服務器資源的優(yōu)化處理; 加密和SSL加速; 緩存靜態(tài)內(nèi)容; 壓縮、減速上傳、安全、外網(wǎng)發(fā)布等。
正向代理與反向代理的區(qū)別
用途上區(qū)分:
正向代理:正向代理用途是為了在防火墻內(nèi)的局域網(wǎng)提供訪問internet的途徑。 反向代理:反向代理的用途是將防火墻后面的服務器提供給internet用戶訪問。
安全性區(qū)分:
正向代理:正向代理允許客戶端通過它訪問任意網(wǎng)站并且隱蔽客戶端自身,因此必須采取安全措施來確保僅為經(jīng)過授權的客戶端提供服務; 反向代理:對外是透明的,訪問者并不知道自己訪問的是代理。對訪問者而言,它以為訪問的就是原始服務器。
透明代理
透明代理比較類似正向代理的功能,客戶端根本不需要知道有代理服務器的存在,它改變你的request fields(報文),并會傳送真實IP,多用于路由器的NAT轉(zhuǎn)發(fā)中。
比如為了工作效率或者安全,A公司屏蔽了QQ軟件的使用。公司在內(nèi)網(wǎng)和外網(wǎng)的中間插入一個透明代理,根據(jù)規(guī)則抓取請求內(nèi)容,遇到qq的請求就把它給屏蔽掉,這樣就完成了透明屏蔽。
小結
正向代理和反向代理的區(qū)別在于代理的對象不一樣,正向代理的代理對象是客戶端,反向代理的代理對象是服務端。
代理服務器站在客戶端那邊就是正向代理,代理服務器站在原始服務器那邊就是反向代理。
參考文章:
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
