0X01 正向代理#
正向代理是一個位於客戶端和原始伺服器 (origin server) 之間的伺服器,為了從原始伺服器取得內容,客戶端向代理發送一個請求並指定目標 (原始伺服器),然後代理向原始伺服器轉交請求並將獲得的內容返回給客戶端。客戶端必須要進行一些特別的設置才能使用正向代理。
正向代理類似一個跳板機,代理訪問外部資源。
0X02 反向代理#
反向代理正好相反,對於客戶端而言它就像是原始伺服器,並且客戶端不需要進行任何特別的設置。客戶端向反向代理的命名空間 (name-space) 中的內容發送普通請求,接著反向代理將判斷向何處 (原始伺服器) 轉交請求,並將獲得的內容返回給客戶端,就像這些內容原本就是它自己的一樣。
反向代理(Reverse Proxy)實際運行方式是指以代理伺服器來接受 internet 上的連接請求,然後將請求轉發給內部網路上的伺服器,並將從伺服器上得到的結果返回給 internet 上請求連接的客戶端,此時代理伺服器對外就表現為一個伺服器。
(1)保證內網的安全,可以使用反向代理提供 WAF 功能,阻止 web 攻擊
大型網站,通常將反向代理作為公網訪問地址,Web 伺服器是內網。
(2)負載均衡,通過反向代理伺服器來優化網站的負載
0X03 區別#
正向代理中,proxy 和 client 同屬一個 LAN,對 server 透明;
反向代理中,proxy 和 server 同屬一個 LAN,對 client 透明。
實際上 proxy 在兩種代理中做的事都是代為收發請求和響應,不過從結構上來看正好左右互換了下,所以把前者那種代理方式叫做正向代理,後者叫做反向代理。
從用途上來區分:#
- 正向代理:正向代理用途是為了在防火牆內的局域網提供訪問 internet 的途徑。另外還可以使用緩衝特性減少網路使用率
- 反向代理:反向代理的用途是將防火牆後面的伺服器提供給 internet 用戶訪問。同時還可以完成諸如負載均衡等功能
從安全性來講:#
(1)正向代理:正向代理允許客戶端透過它訪問任意網站並且隱蔽客戶端自身,因此你必須採取安全措施來確保僅為經過授權的客戶端提供服務
(2)反向代理:對外是透明的,訪問者並不知道自己訪問的是代理。對訪問者而言,他以為訪問的就是原始伺服器