"原文鏈接" 之所以轉載這篇文章,是因為例子舉的太好了,非常適合初學者理解。但是樣式有點亂 自己稍微整理了下。 正向代理 比如你現在缺錢,想找馬雲爸爸去借錢,可想而知人家可能鳥都不鳥你,到最後碰一鼻子灰借不到錢。不過你認識你家隔壁老王,而老王認識馬雲同志,而且關係還很好。這時候你托老王去找馬雲借錢, ...
原文鏈接 之所以轉載這篇文章,是因為例子舉的太好了,非常適合初學者理解。但是樣式有點亂 自己稍微整理了下。
正向代理
比如你現在缺錢,想找馬雲爸爸去借錢,可想而知人家可能鳥都不鳥你,到最後碰一鼻子灰借不到錢。不過你認識你家隔壁老王,而老王認識馬雲同志,而且關係還很好。這時候你托老王去找馬雲借錢,當然這事最後成了,你從馬雲那裡借到了500萬!這時候馬雲並不知道錢是你借的,只知道這錢是老王借的。最後由老王把錢轉交給你。在這裡,老王就充當了一個重要的角色:代理。
此時的代理,就是我們常說的正向代理。代理客戶端去請求伺服器,隱藏了真實客戶端,伺服器並不知道真實的客戶端是誰。正向代理應用最廣泛的莫過於現在的某些“科學上網工具”,你訪問不了谷歌、Facebook的時候,你可以在國外搭建一臺代理伺服器,代理你訪問,代理伺服器再把請求到的數據轉交給你,你就可以看到內容了
相對專業點解釋:
正向代理是一個位於客戶端和原始伺服器(origin server)之間的伺服器,為了從原始伺服器取得內容,客戶端向代理髮送一個請求並指定目標(原始伺服器),然後代理向原始伺服器轉交請求並將獲得的內容返回給客戶端。客戶端必須要進行一些特別的設置才能使用正向代理。
反向代理
比如你現在很無聊,想找人聊天,這時候你撥通了聯通客服10010電話,聯通的總機可能隨機給你分配一個閑置的客服給你接通。這時候你如願以償的和客服聊了起來,問了問她目前有沒有結婚、有沒有對象、家住哪裡、她的微信號、她的手機號。。。
此時聯通總機充當的角色就是反向代理,你只知道和客服接通並聊了起來,具體為什麼會接通這個客服MM,怎麼接通的,你並不知道。
反向代理隱藏了真正的服務端,就像你每天使用百度的時候,只知道敲打www.baidu.com就可以打開百度搜索頁面,但背後成千上萬台百度伺服器具體是哪一臺為我們服務的,我們並不知道。我們只知道這個代理伺服器,它會把我們的請求轉發到真實為我們服務的那台伺服器那裡去。
軟體層面一般常用Nginx來做反向代理伺服器,它的性能非常好,用來做負載均衡。
相對專業點解釋:
反向代理(Reverse Proxy)方式是指以代理伺服器來接受Internet上的連接請求,然後將請求轉發給內部網路上的伺服器;並將從伺服器上得到的結果返回給Internet上請求連接的客戶端,此時代理伺服器對外就表現為一個伺服器。
通常的代理伺服器,只用於代理內部網路對Internet的連接請求,客戶機必須指定代理伺服器,並將本來要直接發送到Web伺服器上的http請求發送 到代理伺服器中。當一個代理伺服器能夠代理外部網路上的主機,訪問內部網路時,這種代理服務的方式稱為反向代理服務。
綜上所述:正向代理代理對象是客戶端,反向代理代理對象是服務端。
兩者區別
從用途 上來講:
正向代理的典型用途是為在防火牆內的區域網客戶端提供訪問Internet的途徑。正向代理還可以使用緩衝特性減少網路使用率。反向代理的典型用途是將 防火牆後面的伺服器提供給Internet用戶訪問。反向代理還可以為後端的多台伺服器提供負載平衡,或為後端較慢的伺服器提供緩衝服務。
另外,反向代理還可以啟用高級URL策略和管理技術,從而使處於不同web伺服器系統的web頁面同時存在於同一個URL空間下。
從安全性 來講:
正向代理允許客戶端通過它訪問任意網站並且隱藏客戶端自身,因此你必須採取安全措施以確保僅為經過授權的客戶端提供服務。
反向代理對外都是透明的,訪問者並不知道自己訪問的是一個代理。
最後一句話總結:
打個比方,有a,b,c三個人
正向代理是: a通過b向C借錢,a知道c的存在 。
反向代理是: a向b借錢,b又向C借,a不知道c的存在。