Nginx正向代理與反向代理

一、前言
  最近工做中用到反向代理,發現網絡代理的玩法還真很多,網絡背後有不少須要去學習。而在此以前僅僅使用了過代理軟件,曾經爲了訪問google,使用了代理軟件,須要在瀏覽器中配置代理的地址。我只知道有代理這個概念,並不清楚代理還有正向和反向之分,因而趕忙學習一下,補充一下知識。首先弄清楚什麼是正向代理,什麼是反向代理,而後是兩者在實際使用中展現的方式是什麼樣的,最後總結一下正向代理用來作什麼,反向代理能夠作什麼。
二、正向代理
  正向代理相似一個跳板機,代理訪問外部資源。html

舉個例子:
  我是一個用戶,我訪問不了某網站,可是我能訪問一個代理服務器,這個代理服務器呢,他能訪問那個我不能訪問的網站,因而我先連上代理服務器,告訴他我須要那個沒法訪問網站的內容,代理服務器去取回來,而後返回給我。從網站的角度,只在代理服務器來取內容的時候有一次記錄,有時候並不知道是用戶的請求,也隱藏了用戶的資料,這取決於代理告不告訴網站。
  客戶端必須設置正向代理服務器,固然前提是要知道正向代理服務器的IP地址,還有代理程序的端口。
  例如以前使用過這類軟件例如CCproxy,http://www.ccproxy.com/ 須要在瀏覽器中配置代理的地址。nginx

  總結來講:正向代理 是一個位於客戶端和原始服務器(origin server)之間的服務器,爲了從原始服務器取得內容,客戶端向代理髮送一個請求並指定目標(原始服務器),而後代理向原始服務器轉交請求並將得到的內容返回給客戶端。客戶端必需要進行一些特別的設置才能使用正向代理。
正向代理的用途:
 (1)訪問原來沒法訪問的資源,如googleweb

(2) 能夠作緩存,加速訪問資源

 (3)對客戶端訪問受權,上網進行認證
 (4)代理能夠記錄用戶訪問記錄(上網行爲管理),對外隱藏用戶信息
例如CCProxy用途:瀏覽器

三、反向代理
  初次接觸方向代理的感受是,客戶端是無感知代理的存在的,反向代理對外都是透明的,訪問者者並不知道本身訪問的是一個代理。由於客戶端不須要任何配置就能夠訪問。
  反向代理(Reverse Proxy)實際運行方式是指以代理服務器來接受internet上的鏈接請求,而後將請求轉發給內部網絡上的服務器,並將從服務器上獲得的結果返回給internet上請求鏈接的客戶端,此時代理服務器對外就表現爲一個服務器。
反向代理的做用:
(1)保證內網的安全,能夠使用反向代理提供WAF功能,阻止web攻擊
大型網站,一般將反向代理做爲公網訪問地址,Web服務器是內網。緩存

(2)負載均衡,經過反向代理服務器來優化網站的負載安全

四、兩者區別服務器

正向代理須要你主動設置代理服務器ip或者域名進行訪問,由設置的服務器ip或者域名去獲取訪問內容並返回;而反向代理不須要你作任何設置,直接訪問服務器真實ip或者域名,可是服務器內部會自動根據訪問內容進行跳轉及內容返回,你不知道它最終訪問的是哪些機器。
     正向代理是代理客戶端,爲客戶端收發請求,使真實客戶端對服務器不可見;而反向代理是代理服務器端,爲服務器收發請求,使真實服務器對客戶端不可見。

五、nginx的反向代理
  nginx支持配置反向代理,經過反向代理實現網站的負載均衡。這部分先寫一個nginx的配置,後續須要深刻研究nginx的代理模塊和負載均衡模塊。
nginx經過proxy_pass_http 配置代理站點,upstream實現負載均衡。網絡

參考:正向代理與反向代理https://www.cnblogs.com/Anker...負載均衡

相關文章
相關標籤/搜索