「Nginx」正向代理與反向代理

轉載請註明出處: blog.csdn.net/jinixin/article/details/89574956

 

談到正向代理和反向代理, 首先就要先了解代理的概念. 代理, 即代理服務器(Proxy Server), 一般我們會省略”服務器”這幾個字, 代理在客戶端和服務器之間充當中間人.

具體過程如下, 代理接收客戶端發來的請求, 代理從請求中解析出目標服務器, 並向目標服務器轉發請求, 在得到目標服務器的響應後, 便將響應轉發回客戶端. 期間代理可以選擇性的緩存響應, 以便加速後續相同訪問, 因此一般代理都有較大的磁盤空間.

 

 

正向代理

 

正向代理的定義

下圖中的"代理服務器"便是正向代理服務器, 簡稱正向代理.

正向代理

客戶端所有的網絡請求都通過代理服務器中轉. 目標服務器不知道客戶端的存在, 其認爲訪問者就是代理服務器, 不知道真正的訪問者是誰.

整個過程有點類似於外匯兌換, 客戶端是客戶, 正向代理是銀行, 目標服務器是外匯提供國. 客戶知道自己要兌換某國家的外匯, 外匯提供國並不知道是哪個客戶來兌換的, 其只知道自己在和某某銀行交易.

 

正向代理的作用

1. 網絡加速器: 加速部分站點訪問.

2. 突破訪問限制: 突破公司或國家對部分網絡的屏蔽.

Request URL: https://www.google.com.hk/
Request Method: GET
Status Code: 200 
Remote Address: 216.58.221.238:443

上面爲開啓代理前, 瀏覽器的請求直接發送給Google服務器. 下面爲開啓代理後, 瀏覽器的請求轉交給代理服務器(127.0.0.1:1086).

Request URL: https://www.google.com.hk/
Request Method: GET
Status Code: 200 
Remote Address: 127.0.0.1:1086

3. 防火牆: 用作內部網絡的出網跳板機, 因其可以解析請求與響應, 從而能攔截一部分危險響應.

4. 保護客戶端隱私: 請求是通過代理中轉的, 因此目標服務器不知道請求的真正發起者, 故可以較好的隱藏客戶端IP. 題外話, 通過一層代理還是比較好追查的, 要想成爲無法追蹤的隱形人, 可以考慮使用”代理鏈”.

 

 

反向代理

 

反向代理的定義

下圖中的代理服務器便是反向代理服務器, 簡稱反向代理.

反向代理

代理服務器本身並不具備處理請求的能力, 因此其會將收到的請求按照負載均衡算法轉發給背後的應用服務器, 在得到應用服務器響應後, 其再將響應轉發給相應客戶端. 客戶端並不知道應用服務器集羣的存在, 它們認爲代理服務器便是目標服務器.

整個過程有點類似於超市, 客戶端是顧客, 反向代理是超市, 應用服務器是商品提供商. 顧客並不知道某商品背後的商品提供商是誰, 也不會直接和某商品提供商直接交易, 顧客都是和某超市進行交易的.

 

反向代理的作用

1. 負載均衡: 將請求壓力平均負載到多臺服務器上, 從而保證背後的整個應用服務器集羣穩定.

2. 保護服務器的隱私: 隱藏背後的服務器集羣, 只向客戶端暴露自身這一個IP.

3. 緩衝訪問峯值: 向背後的應用服務器轉交完整的有效請求.

4. 緩存: 緩存靜態資源.

 

反向代理的傑出代表: Nginx服務器

 

 

總結

 

我們可以簡單認爲, 代理服務器在客戶端側,  該代理便是正向代理. 代理服務器在服務器側, 該代理便是反向代理. 要注意的是, 這個"在某側"更多是邏輯上的, 不要從局域網或地理位置遠近來理解.

 

 

文中如有不當之處, 還望包容和指出, 感謝

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