前言
學(xué)習 nginx 過程中,了解到反向代理 一詞茫藏,以前聽說過很多次耳高,但沒有具體了解到底為什么叫反向代理叠穆,那同時應(yīng)該也有對應(yīng)的正向代理一說。因此查閱了一下昙楚,下面記錄一下學(xué)習結(jié)果刽肠。
先上結(jié)論:
- 正向代理代理的是客戶端纯命,隱藏真實客戶端愿题;
- 反向代理代理的是服務(wù)端损俭,隱藏真實服務(wù)端。
什么是正向代理
知乎上有個很好的例子這里拿來用一下:
A同學(xué)在大眾創(chuàng)業(yè)潘酗、萬眾創(chuàng)新的大時代背景下開啟他的創(chuàng)業(yè)之路杆兵,目前他遇到的最大的一個問題就是啟動資金,于是他決定去找馬云爸爸借錢仔夺,可想而知琐脏,最后碰一鼻子灰回來了,情急之下缸兔,他想到一個辦法日裙,找關(guān)系開后門,經(jīng)過一番消息打探惰蜜,原來A同學(xué)的大學(xué)老師王老師是馬云的同學(xué)阅签,于是A同學(xué)找到王老師,托王老師幫忙去馬云那借500萬過來蝎抽,當然最后事成了。不過馬云并不知道這錢是A同學(xué)借的路克,馬云是借給王老師的樟结,最后由王老師轉(zhuǎn)交給A同學(xué)。這里的王老師在這個過程中扮演了一個非常關(guān)鍵的角色精算,就是代理瓢宦,也可以說是正向代理,王老師代替A同學(xué)辦這件事灰羽,這個過程中驮履,真正借錢的人是誰,馬云是不知道的廉嚼,這點非常關(guān)鍵玫镐。
我們常說的代理也就是只正向代理,正向代理的過程怠噪,它隱藏了真實的請求客戶端恐似,服務(wù)端不知道真實的客戶端是誰,客戶端請求的服務(wù)都被代理服務(wù)器代替來請求傍念,某些科學(xué)上網(wǎng)工具扮演的就是典型的正向代理角色矫夷。用瀏覽器訪問 http://www.google.com 時葛闷,被殘忍的block,于是你可以在國外搭建一臺代理服務(wù)器双藕,讓代理幫我去請求 google.com 淑趾,代理把請求返回的相應(yīng)結(jié)構(gòu)再返回給我。
什么是反向代理
大家都有過這樣的經(jīng)歷忧陪,撥打10086客服電話扣泊,可能一個地區(qū)的10086客服有幾個或者幾十個,你永遠都不需要關(guān)心在電話那頭的是哪一個赤嚼,叫什么旷赖,男的,還是女的更卒,漂亮的還是帥氣的等孵,你都不關(guān)心,你關(guān)心的是你的問題能不能得到專業(yè)的解答蹂空,你只需要撥通了10086的總機號碼俯萌,電話那頭總會有人會回答你,只是有時慢有時快而已上枕。那么這里的10086總機號碼就是我們說的反向代理咐熙。客戶不知道真正提供服務(wù)人的是誰辨萍。
反向代理隱藏了真實的服務(wù)端棋恼,當我們請求 www.baidu.com 的時候,就像撥打10086一樣锈玉,背后可能有成千上萬臺服務(wù)器為我們服務(wù)爪飘,但具體是哪一臺,你不知道拉背,也不需要知道师崎,你只需要知道反向代理服務(wù)器是誰就好了,www.baidu.com 就是我們的反向代理服務(wù)器椅棺,反向代理服務(wù)器會幫我們把請求轉(zhuǎn)發(fā)到真實的服務(wù)器那里去犁罩。Nginx就是性能非常好的反向代理服務(wù)器,用來做負載均衡两疚。
反向代理的實現(xiàn)過程
- 需要有一個負載均衡設(shè)備來分發(fā)用戶請求床估,將用戶請求分發(fā)到空閑的服務(wù)器上;
- 服務(wù)器返回自己的服務(wù)到負載均衡設(shè)備诱渤;
- 負載均衡將服務(wù)器的服務(wù)返回用戶顷窒。
以上的潛臺詞是:用戶和負載均衡設(shè)備直接通信,也意味著用戶做服務(wù)器域名解析時,解析得到的IP其實是負載均衡的IP鞋吉,而不是服務(wù)器的IP鸦做,這樣有一個好處是,當新加入/移走服務(wù)器時谓着,僅僅需要修改負載均衡的服務(wù)器列表泼诱,而不會影響現(xiàn)有的服務(wù)。
正向代理與反向代理的區(qū)別
代理其實就是一個中介赊锚,A和B本來可以直連治筒,中間插入一個C,C就是中介舷蒲。
- 正向代理:剛開始的時候耸袜,代理多數(shù)是幫助內(nèi)網(wǎng)client訪問外網(wǎng)server用的(比如HTTP代理),從內(nèi)到外牲平。
- 反向代理:后來出現(xiàn)了反向代理堤框,"反向"這個詞在這兒的意思其實是指方向相反,即代理將來自外網(wǎng)client的請求forward到內(nèi)網(wǎng)server纵柿,從外到內(nèi)蜈抓。
- 正向代理中,代理和客戶端同屬一個LAN昂儒,對服務(wù)端透明沟使;
- 反向代理中,代理和服務(wù)端同屬一個LAN渊跋,對服務(wù)端透明腊嗡。
實際上不論正/反代理做的事都是代為收發(fā)請求和響應(yīng)。
代理服務(wù)器應(yīng)用的場景
場景一
如果不采用代理拾酝,用戶的IP叽唱、端口號直接暴露在Internet(盡管地址轉(zhuǎn)換NAT),外部主機依然可以根據(jù)IP微宝、端口號來開采主機安全漏洞,所以在企業(yè)網(wǎng)虎眨,一般都是采用代理服務(wù)器訪問互聯(lián)網(wǎng)蟋软。同時,如果有安全漏洞嗽桩,由于代理服務(wù)器數(shù)量有限岳守,因此相對于修補千千萬萬的用戶主機,修補代理服務(wù)器的安全漏洞更方便會計碌冶。
場景二
在一個超大型局域網(wǎng)湿痢,德高望重的家長覺得小盆友們“幼稚”、“有時還有點單純”,外部的世界是洪水猛獸譬重,為了不讓小盆友們學(xué)壞拒逮,決定不讓小盆友們訪問一些網(wǎng)站,可小盆友們有強烈的逆反心理臀规,儂越是不讓我看滩援,我越是想看,于是小盆友們使用了代理服務(wù)器塔嬉,這些代理服務(wù)器將禁止訪問的網(wǎng)頁打包好玩徊,然后再轉(zhuǎn)交給小盆友,僅此而已谨究。
當然關(guān)鍵的關(guān)鍵是代理服務(wù)器不在禁止名單當中恩袱!