徹底理解正向代理腌闯、反向代理绳瘟、透明代理

套用古龍武俠小說(shuō)套路來(lái)說(shuō),代理服務(wù)技術(shù)是一門很古老的技術(shù)姿骏,是在互聯(lián)網(wǎng)早期出現(xiàn)就使用的技術(shù)糖声。一般實(shí)現(xiàn)代理技術(shù)的方式就是在服務(wù)器上安裝代理服務(wù)軟件,讓其成為一個(gè)代理服務(wù)器分瘦,從而實(shí)現(xiàn)代理技術(shù)蘸泻。常用的代理技術(shù)分為正向代理、反向代理和透明代理嘲玫。本文就是針對(duì)這三種代理來(lái)講解一些基本原理和具體的適用范圍悦施,便于大家更深入理解代理服務(wù)技術(shù)。

最后去团,如果大家如果在自學(xué)遇到困難抡诞,想找一個(gè)java的學(xué)習(xí)環(huán)境,可以加入我們的java學(xué)習(xí)圈土陪,點(diǎn)擊我加入吧昼汗,會(huì)節(jié)約很多時(shí)間,減少很多在學(xué)習(xí)中遇到的難題鬼雀。


一:正向代理(Forward Proxy)

一般情況下顷窒,如果沒(méi)有特別說(shuō)明,代理技術(shù)默認(rèn)說(shuō)的是正向代理技術(shù)源哩。關(guān)于正向代理的概念如下:正向代理(forward)是一個(gè)位于客戶端【用戶A】和原始服務(wù)器(origin server)【服務(wù)器B】之間的服務(wù)器【代理服務(wù)器Z】鞋吉,為了從原始服務(wù)器取得內(nèi)容,用戶A向代理服務(wù)器Z發(fā)送一個(gè)請(qǐng)求并指定目標(biāo)(服務(wù)器B)励烦,然后代理服務(wù)器Z向服務(wù)器B轉(zhuǎn)交請(qǐng)求并將獲得的內(nèi)容返回給客戶端谓着。客戶端必須要進(jìn)行一些特別的設(shè)置才能使用正向代理崩侠。

(圖1.1)

從上面的概念中漆魔,我們看出坷檩,文中所謂的正向代理就是代理服務(wù)器替代訪問(wèn)方【用戶A】去訪問(wèn)目標(biāo)服務(wù)器【服務(wù)器B】這就是正向代理的意義所在。而為什么要用代理服務(wù)器去代替訪問(wèn)方【用戶A】去訪問(wèn)服務(wù)器B呢改抡?這就要從代理服務(wù)器使用的意義說(shuō)起矢炼。使用正向代理服務(wù)器作用主要有以下幾點(diǎn):

1.訪問(wèn)本無(wú)法訪問(wèn)的服務(wù)器B,如下圖1.2

(圖1.2)

我們拋除復(fù)雜的網(wǎng)絡(luò)路由情節(jié)來(lái)看圖1.2阿纤,假設(shè)圖中路由器從左到右命名為R1,R2句灌。假設(shè)最初用戶A要訪問(wèn)服務(wù)器B需要經(jīng)過(guò)R1和R2路由器這樣一個(gè)路由節(jié)點(diǎn),如果路由器R1或者路由器R2發(fā)生故障欠拾,那么就無(wú)法訪問(wèn)服務(wù)器B了胰锌。但是如果用戶A讓代理服務(wù)器Z去代替自己訪問(wèn)服務(wù)器B,由于代理服務(wù)器Z沒(méi)有在路由器R1或R2節(jié)點(diǎn)中藐窄,而是通過(guò)其它的路由節(jié)點(diǎn)訪問(wèn)服務(wù)器B资昧,那么用戶A就可以得到服務(wù)器B的數(shù)據(jù)了。

2.加速訪問(wèn)服務(wù)器B

這種說(shuō)法目前不像以前那么流行了荆忍,主要是帶寬流量的飛速發(fā)展格带。早期的正向代理中,很多人使用正向代理就是提速刹枉。還是如圖1.2假設(shè)用戶A到服務(wù)器B叽唱,經(jīng)過(guò)R1路由器和R2路由器,而R1到R2路由器的鏈路是一個(gè)低帶寬鏈路微宝。而用戶A到代理服務(wù)器Z棺亭,從代理服務(wù)器Z到服務(wù)器B都是高帶寬鏈路。那么很顯然就可以加速訪問(wèn)服務(wù)器B了蟋软。

3.Cache作用

Cache(緩存)技術(shù)和代理服務(wù)技術(shù)是緊密聯(lián)系的(不光是正向代理镶摘,反向代理也使用了Cache(緩存)技術(shù)。還如上圖所示钟鸵,如果在用戶A訪問(wèn)服務(wù)器B某數(shù)據(jù)J之前钉稍,已經(jīng)有人通過(guò)代理服務(wù)器Z訪問(wèn)過(guò)服務(wù)器B上得數(shù)據(jù)J,那么代理服務(wù)器Z會(huì)把數(shù)據(jù)J保存一段時(shí)間棺耍,如果有人正好取該數(shù)據(jù)J,那么代理服務(wù)器Z不再訪問(wèn)服務(wù)器B种樱,而把緩存的數(shù)據(jù)J直接發(fā)給用戶A蒙袍。這一技術(shù)在Cache中術(shù)語(yǔ)就叫Cache命中。如果有更多的像用戶A的用戶來(lái)訪問(wèn)代理服務(wù)器Z嫩挤,那么這些用戶都可以直接從代理服務(wù)器Z中取得數(shù)據(jù)J害幅,而不用千里迢迢的去服務(wù)器B下載數(shù)據(jù)了。

4.客戶端訪問(wèn)授權(quán)

這方面的內(nèi)容現(xiàn)今使用的還是比較多的岂昭,例如一些公司采用ISA SERVER做為正向代理服務(wù)器來(lái)授權(quán)用戶是否有權(quán)限訪問(wèn)互聯(lián)網(wǎng)以现。

(圖1.3)

圖1.3防火墻作為網(wǎng)關(guān),用來(lái)過(guò)濾外網(wǎng)對(duì)其的訪問(wèn)。假設(shè)用戶A和用戶B都設(shè)置了代理服務(wù)器邑遏,用戶A允許訪問(wèn)互聯(lián)網(wǎng)佣赖,而用戶B不允許訪問(wèn)互聯(lián)網(wǎng)(這個(gè)在代理服務(wù)器Z上做限制)這樣用戶A因?yàn)槭跈?quán),可以通過(guò)代理服務(wù)器訪問(wèn)到服務(wù)器B记盒,而用戶B因?yàn)闆](méi)有被代理服務(wù)器Z授權(quán)憎蛤,所以訪問(wèn)服務(wù)器B時(shí),數(shù)據(jù)包會(huì)被直接丟棄纪吮。

5.隱藏訪問(wèn)者的行蹤

如下圖1.4 我們可以看出服務(wù)器B并不知道訪問(wèn)自己的實(shí)際是用戶A俩檬,因?yàn)榇矸?wù)器Z代替用戶A去直接與服務(wù)器B進(jìn)行交互。如果代理服務(wù)器Z被用戶A完全控制(或不完全控制)碾盟,會(huì)慣以“肉雞”術(shù)語(yǔ)稱呼棚辽。

(圖1.4)

總結(jié)下,正向代理是一個(gè)位于客戶端和原始服務(wù)器(origin server)之間的服務(wù)器冰肴,為了從原始服務(wù)器取得內(nèi)容晚胡,客戶端向代理發(fā)送一個(gè)請(qǐng)求并指定目標(biāo)(原始服務(wù)器),然后代理向原始服務(wù)器轉(zhuǎn)交請(qǐng)求并將獲得的內(nèi)容返回給客戶端嚼沿」琅蹋客戶端必須設(shè)置正向代理服務(wù)器,當(dāng)然前提是要知道正向代理服務(wù)器的IP地址骡尽,還有代理程序的端口遣妥。

二:反向代理(reverse proxy)

反向代理正好與正向代理相反,對(duì)于客戶端而言代理服務(wù)器就像是原始服務(wù)器攀细,并且客戶端不需要進(jìn)行任何特別的設(shè)置箫踩。客戶端向反向代理的命名空間(name-space)中的內(nèi)容發(fā)送普通請(qǐng)求谭贪,接著反向代理將判斷向何處(原始服務(wù)器)轉(zhuǎn)交請(qǐng)求境钟,并將獲得的內(nèi)容返回給客戶端。

使用反向代理服務(wù)器的作用如下:

1. 保護(hù)和隱藏原始資源服務(wù)器

(圖2.1)

用戶A始終認(rèn)為它訪問(wèn)的是原始服務(wù)器B而不是代理服務(wù)器Z俭识,但實(shí)用際上反向代理服務(wù)器接受用戶A的應(yīng)答慨削,從原始資源服務(wù)器B中取得用戶A的需求資源,然后發(fā)送給用戶A套媚。由于防火墻的作用缚态,只允許代理服務(wù)器Z訪問(wèn)原始資源服務(wù)器B。盡管在這個(gè)虛擬的環(huán)境下堤瘤,防火墻和反向代理的共同作用保護(hù)了原始資源服務(wù)器B玫芦,但用戶A并不知情。

2.負(fù)載均衡

(圖2.2)

當(dāng)反向代理服務(wù)器不止一個(gè)的時(shí)候本辐,我們甚至可以把它們做成集群桥帆,當(dāng)更多的用戶訪問(wèn)資源服務(wù)器B的時(shí)候医增,讓不同的代理服務(wù)器Z(x)去應(yīng)答不同的用戶,然后發(fā)送不同用戶需要的資源老虫。當(dāng)然反向代理服務(wù)器像正向代理服務(wù)器一樣擁有CACHE的作用叶骨,它可以緩存原始資源服務(wù)器B的資源,而不是每次都要向原始資源服務(wù)器B請(qǐng)求數(shù)據(jù)张遭,特別是一些靜態(tài)的數(shù)據(jù)邓萨,比如圖片和文件,如果這些反向代理服務(wù)器能夠做到和用戶X來(lái)自同一個(gè)網(wǎng)絡(luò)菊卷,那么用戶X訪問(wèn)反向代理服務(wù)器X缔恳,就會(huì)得到很高質(zhì)量的速度。這正是CDN技術(shù)的核心洁闰。

(圖2.3)

我們并不是講解CDN歉甚,所以去掉了CDN最關(guān)鍵的核心技術(shù)智能DNS。只是展示CDN技術(shù)實(shí)際上利用的正是反向代理原理這塊扑眉。反向代理結(jié)論與正向代理正好相反纸泄,對(duì)于客戶端而言它就像是原始服務(wù)器,并且客戶端不需要進(jìn)行任何特別的設(shè)置腰素∑覆茫客戶端向反向代理的命名空間(name-space)中的內(nèi)容發(fā)送普通請(qǐng)求,接著反向代理將判斷向何處(原始服務(wù)器)轉(zhuǎn)交請(qǐng)求弓千,并將獲得的內(nèi)容返回給客戶端衡便,就像這些內(nèi)容原本就是它自己的一樣⊙蠓茫基本上镣陕,網(wǎng)上做正反向代理的程序很多,能做正向代理的軟件大部分也可以做反向代理姻政。開(kāi)源軟件中最流行的就是squid呆抑,既可以做正向代理,也有很多人用來(lái)做反向代理的前端服務(wù)器汁展。另外MS ISA也可以用來(lái)在WINDOWS平臺(tái)下做正向代理鹊碍。反向代理中最主要的實(shí)踐就是WEB服務(wù),近些年來(lái)最火的就是Nginx了善镰。網(wǎng)上有人說(shuō)NGINX不能做正向代理妹萨,其實(shí)是不對(duì)的。NGINX也可以做正向代理炫欺,不過(guò)用的人比較少了。

三:透明代理

如果把正向代理熏兄、反向代理和透明代理按照人類血緣關(guān)系來(lái)劃分的話品洛。那么正向代理和透明代理是很明顯堂親關(guān)系树姨,而正向代理和反向代理就是表親關(guān)系了。

透明代理的意思是客戶端根本不需要知道有代理服務(wù)器的存在桥状,它改編你的request fields(報(bào)文)帽揪,并會(huì)傳送真實(shí)IP。注意辅斟,加密的透明代理則是屬于匿名代理转晰,意思是不用設(shè)置使用代理了。

透明代理實(shí)踐的例子就是時(shí)下很多公司使用的行為管理軟件士飒。如下圖3.1

(圖3.1)

用戶A和用戶B并不知道行為管理設(shè)備充當(dāng)透明代理行為查邢,當(dāng)用戶A或用戶B向服務(wù)器A或服務(wù)器B提交請(qǐng)求的時(shí)候,透明代理設(shè)備根據(jù)自身策略攔截并修改用戶A或B的報(bào)文酵幕,并作為實(shí)際的請(qǐng)求方扰藕,向服務(wù)器A或B發(fā)送請(qǐng)求,當(dāng)接收信息回傳芳撒,透明代理再根據(jù)自身的設(shè)置把允許的報(bào)文發(fā)回至用戶A或B邓深,如上圖,如果透明代理設(shè)置不允許訪問(wèn)服務(wù)器B笔刹,那么用戶A或者用戶B就不會(huì)得到服務(wù)器B的數(shù)據(jù)芥备。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市舌菜,隨后出現(xiàn)的幾起案子萌壳,更是在濱河造成了極大的恐慌,老刑警劉巖酷师,帶你破解...
    沈念sama閱讀 222,807評(píng)論 6 518
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件讶凉,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡山孔,警方通過(guò)查閱死者的電腦和手機(jī)懂讯,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,284評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)台颠,“玉大人褐望,你說(shuō)我怎么就攤上這事〈埃” “怎么了瘫里?”我有些...
    開(kāi)封第一講書人閱讀 169,589評(píng)論 0 363
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)荡碾。 經(jīng)常有香客問(wèn)我谨读,道長(zhǎng),這世上最難降的妖魔是什么坛吁? 我笑而不...
    開(kāi)封第一講書人閱讀 60,188評(píng)論 1 300
  • 正文 為了忘掉前任劳殖,我火速辦了婚禮铐尚,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘哆姻。我一直安慰自己宣增,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 69,185評(píng)論 6 398
  • 文/花漫 我一把揭開(kāi)白布矛缨。 她就那樣靜靜地躺著爹脾,像睡著了一般。 火紅的嫁衣襯著肌膚如雪箕昭。 梳的紋絲不亂的頭發(fā)上灵妨,一...
    開(kāi)封第一講書人閱讀 52,785評(píng)論 1 314
  • 那天,我揣著相機(jī)與錄音盟广,去河邊找鬼闷串。 笑死,一個(gè)胖子當(dāng)著我的面吹牛筋量,可吹牛的內(nèi)容都是我干的烹吵。 我是一名探鬼主播,決...
    沈念sama閱讀 41,220評(píng)論 3 423
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼桨武,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼肋拔!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起呀酸,我...
    開(kāi)封第一講書人閱讀 40,167評(píng)論 0 277
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤凉蜂,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后性誉,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體窿吩,經(jīng)...
    沈念sama閱讀 46,698評(píng)論 1 320
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,767評(píng)論 3 343
  • 正文 我和宋清朗相戀三年错览,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了纫雁。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,912評(píng)論 1 353
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡倾哺,死狀恐怖轧邪,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情羞海,我是刑警寧澤忌愚,帶...
    沈念sama閱讀 36,572評(píng)論 5 351
  • 正文 年R本政府宣布,位于F島的核電站却邓,受9級(jí)特大地震影響硕糊,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,254評(píng)論 3 336
  • 文/蒙蒙 一癌幕、第九天 我趴在偏房一處隱蔽的房頂上張望衙耕。 院中可真熱鬧昧穿,春花似錦勺远、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書人閱讀 32,746評(píng)論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至饰潜,卻和暖如春初坠,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背彭雾。 一陣腳步聲響...
    開(kāi)封第一講書人閱讀 33,859評(píng)論 1 274
  • 我被黑心中介騙來(lái)泰國(guó)打工碟刺, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人薯酝。 一個(gè)月前我還...
    沈念sama閱讀 49,359評(píng)論 3 379
  • 正文 我出身青樓半沽,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親吴菠。 傳聞我的和親對(duì)象是個(gè)殘疾皇子者填,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,922評(píng)論 2 361

推薦閱讀更多精彩內(nèi)容

  • 轉(zhuǎn)載自圖解正向代理酿矢、反向代理榨乎、透明代理 套用古龍武俠小說(shuō)套路來(lái)說(shuō),代理服務(wù)技術(shù)是一門很古老的技術(shù)瘫筐,是在互聯(lián)網(wǎng)早期出...
    卓三陽(yáng)閱讀 1,505評(píng)論 0 28
  • 趕考 考完文化課蜜暑,拿了行李趕往南山校區(qū)。入住網(wǎng)上訂的酒店严肪,這里的酒店不知比轉(zhuǎn)塘那邊的高出多少個(gè)檔次史煎。酒店就在西湖邊...
    風(fēng)信子lynn閱讀 317評(píng)論 0 3
  • 當(dāng)我執(zhí)子回看,亂世烽火殘骸驳糯, 問(wèn)君篇梭, 來(lái)世愿,可踐酝枢?
    朝華夕下閱讀 249評(píng)論 2 4
  • 滴答滴答 利用手機(jī)攝像頭測(cè)量心率的APP 你只需要把你的食指指尖輕輕放到攝像頭前 利用6-8秒的時(shí)間 記錄日期時(shí)間...
    ljauhi閱讀 183評(píng)論 0 0
  • 1.為什么你無(wú)法集中注意力 相信大家都有過(guò)這樣的經(jīng)歷: 想打開(kāi)手機(jī)查一個(gè)東西坦康,來(lái)到搜索頁(yè)...
    君澤君閱讀 877評(píng)論 0 3