1. 程式人生 > >關於正向代理和反向代理的個人理解

關於正向代理和反向代理的個人理解

因為工作中有接觸到nginx代理伺服器部署相關的工作,一開始我是拒絕的,後來也是上網查詢各種大佬的解釋才漸漸頓悟,下面居來總結一下我個人歸納出來的適合新手理解的說明。

就這張圖做一下說明,圖1為正向代理,客戶端發起一個請求,假設訪問某個網址,通常是通過域名訪問,這個域名通常也會指向某個IP,顯然這時請求先到達的是代理伺服器,代理伺服器接收到這個請求之後會告訴這朵雲(這朵雲可以理解成是所謂的資訊中心),然後這朵雲就開始解析請求,最後根據解析出來的內容指向某個伺服器做出響應,這個過程你會發現實際上伺服器相對於客戶端是不透明的,也就是說客戶端是能知道是哪臺伺服器做出的響應,這個就是正向代理,典型的應用就是“翻牆”。

再來說圖2,還是一樣的客戶端發起請求,這回先到達的是這朵雲,開始解析,解析完畢後到達代理伺服器,這時候代理伺服器就能搞事情了,假設這3個客戶端都訪問了一個大型網站,一個大型網站一定是有多臺伺服器在背後撐著的,這時候代理伺服器就可以配置轉發策略,發現伺服器A比較閒,於是就讓客戶端A去請求伺服器A,以此類推,這個過程伺服器對客戶端是透明的,客戶端根本不知道是哪臺伺服器做出的響應,這個就是反向代理,典型的應用就是在高併發下做負載均衡。

總結:正向代理——你的腳掰了,想吃天下第一館的餃子,但是你去不了,這就是“牆”,擋在了你和餃子之間,那怎麼辦呢,對了不是還有女朋友嗎?你命令女朋友去天下第一館買餃子,不然晚上等著瞧(*^▽^*),這個過程女朋友就起到了一個代理的作用,而你也知道天下第一館的存在,這就是餃子店對你而言是不透明的。

反向代理——你的腳又掰了,又想吃餃子,但是不要天下第一館的了,於是就叫女朋友隨便去一家店買,所以最後買回來的餃子你並不知道是哪家的餃子,這就是餃子店對你而言是透明的。