最近寫的東西愈來愈偏向Web程序員了···程序員
你想讀懂本篇,就要知道什麼是Web服務器——裝在世界上某個機房裏某臺機器裏某個操做系統裏的一個,對外(公網或者你能訪問)服務各類你須要的信息的軟件!面試
它能夠是Apache、Nginx、Tengine、IIS(滾)...服務器
沒有多餘的解釋,四個字——科#學#上#網。網站
(什麼?你不知道?)好吧。假設你上不了谷歌,N站,油管,91(滾)——你須要一個能上這些網站的玩意兒幫你上,而後讓他把你想看的東西轉給你,這個他能夠是一我的,也能夠是一臺中間服務器,若是是一臺中間服務器,那它就是所謂的「正向代理」。spa
題外話:當初我以爲,正向代理就是 我~中間服務器~我真正想訪問可是不能訪問的服務器,那麼 反向代理不就是:我真正想訪問可是不能訪問的服務器~中間服務器~我 了嗎?這不就是服務器想偷個人數據?操作系統
總之這種「專業名詞」還真不是一時半會兒能消化的,沒辦法,誰讓某些面試官這麼喜歡考呢?代理
正文:資源
先捋清楚什麼是正向代理——或者說,反向代理是相對於正向代理的本質而言的。it
正向代理,通俗點說,就是中間服務器的功能是:跳板。反向代理
反向代理,通俗點說,就是中間服務器的功能是:前臺服務員。
有什麼區別?正向代理的本質就是,我但願我!本身!能訪問我不能訪問,可是我知道我想訪問的地方。
反向代理的本質就是:我但願我訪問某個地方的時候,它後面幫我幹什麼我不關心,我只關心前臺能不能找到我想要的東西。
再用簡單點的話說,正向代理,中間服務器幫「咱們」訪問「咱們不能訪問的地方(可是我知道我想訪問哪裏(谷歌N站))」
反向代理,中間服務器幫「咱們」尋找「我想要的東西(我不知道東西在哪裏,可是中間服務器必定知道)」
從最終訪問的資源信息所在地來講,用正向代理訪問谷歌,那麼正向代理像箇中介,谷歌纔是我想找的人;
咱們訪問百度網盤,百度會用反向代理幫咱們上傳下載東西,而上傳去哪裏從哪裏下載(具體到某個機房的某臺電腦),咱們不知道,這個時候百度網盤的地址"pan.baidu.com/..."和後面的存儲服務器是「一夥人」,這個地址就扮演了前臺服務員的角色——和銀行櫃員很像。
有沒有正反向代理一塊兒用的時候呢?有。
綜上所述,正向代理是我知道我要什麼東西可是我要不到,託個傢伙幫我(代購)——重要的是,商家並不知道真正想買東西的人是我;反向代理是某個室內裝修施工隊的頭兒和他的馬仔,這個時候若是我要找這個頭兒幫我辦點事,馬仔十之八九知道是我想辦點什麼事情,而我不用知道幫我辦事的馬仔是誰,我只要管和頭兒交流就能夠了。
因此,反向代理不少狀況是中間服務器和最終幫我幹活的服務器是一夥人。
因此,正反向一塊兒用,就是(我,科#學#上#網,用谷歌地圖,谷歌地圖反向代理幫我找到地圖存儲的地方並拼合起來返回給我,我本身不用找)
假設A是我,B是中間服務器,C是我想訪問又訪問不到的地方。
step1:A->C(不行)
step2:A->B(能夠)發現 B->C(能夠)
step3:A->(嘿B幫我上一下C)B->C
以上爲正向代理,我(A)真正想訪問的是C,不是你B,可是實際訪問的是B。
假設A是我,B是我想訪問並且能夠訪問的地方,C是B能訪問可是我不知道的地方,可是我要的東西在C上。
step1:A->B(嘿B幫我個事兒唄)
step2:A->B(好嘞,我這就幫你)
step3:B->C(小C啊幫我整一下這事兒,待會快點給個結果我,外面等着要呢)(C:成,立刻)
step4:A(收到B的結果,其實是C的結果)
以上爲反向代理,我(A)真正想訪問的是B,不是C,雖然實際訪問的是B,可是實際結果是C出來的——我殊不知道。
相同點:B都扮演了中介的角色,看起來都是B給A傳遞的數據,實際數據也都是C出來的;因此說,無論正向代理,反向代理,都是「代理(中介)」
不一樣點:正向代理中A是知道C的存在的,並且認爲C纔是服務的提供者;反向代理中A認爲爲是B提供的服務,可是其實是C提供的服務。
本篇爲我的向記錄,若是有什麼術語解釋不對歡迎留言···