正向代理
- 舉個(gè)栗子:客戶端想訪問服務(wù)B,但是由于一些不可抗力,客戶端不能直接訪問B。但是現(xiàn)在有一個(gè)服務(wù)A可以訪問B,而且客戶端又剛好可以訪問A,那么,客戶端其實(shí)可以委托A幫忙訪問B,并且將訪問結(jié)果返回。這種情形下,A就是B的正向代理。
- 正向代理,也就是傳說中的代理,他的工作原理就像一個(gè)跳板。簡單的說,我是一個(gè)用戶,我訪問不了某網(wǎng)站,但是我能訪問一個(gè)代理服務(wù)器,這個(gè)代理服務(wù)器呢,他能訪問那個(gè)我不能訪問的網(wǎng)站,于是我先連上代理服務(wù)器,告訴他我需要那個(gè)無法訪問網(wǎng)站的內(nèi)容,代理服務(wù)器去取回來,然后返回給我。
- 從網(wǎng)站的角度,只在代理服務(wù)器來取內(nèi)容的時(shí)候有一次記錄。有時(shí)候并不知道是用戶的請求,也隱藏了用戶的資料,這取決于代理告不告訴網(wǎng)站。
- 結(jié)論就是 正向代理 是一個(gè)位于客戶端和原始服務(wù)器(origin server)之間的服務(wù)器,為了從原始服務(wù)器取得內(nèi)容,客戶端向代理發(fā)送一個(gè)請求并指定目標(biāo)(原始服務(wù)器),然后代理向原始服務(wù)器轉(zhuǎn)交請求并將獲得的內(nèi)容返回給客戶端。客戶端必須要進(jìn)行一些特別的設(shè)置才能使用正向代理。
- VPN就可以看做是一個(gè)正向代理。但是VPN本質(zhì)上不是代理。
反向代理
- 反向代理是針對于正向代理而言的。
- 舉個(gè)栗子:客戶端向服務(wù)A請求image資源,服務(wù)A順利返回了image資源。但是實(shí)際上,可能服務(wù)A本身是沒有資源,服務(wù)A為了獲取image資源,向真正保有image資源的服務(wù)B發(fā)起了請求,同時(shí)將請求到的資源返回給客戶端。客戶端本身是不需要知道后面A請求B的這個(gè)過程的,這種情形下,A就是B的反向代理。
- 對于客戶端,反向代理服務(wù)器就像是原始服務(wù)器,并且客戶端不需要進(jìn)行任何特別的設(shè)置。
- 客戶端向反向代理的命名空間(name-space)中的內(nèi)容發(fā)送普通請求,接著反向代理將判斷向何處(原始服務(wù)器)轉(zhuǎn)交請求,并將獲得的內(nèi)容返回給客戶端,就像這些內(nèi)容 原本就是它自己的一樣。
cdn、nginx都可以看做是常見的反向代理。 - nginx之所以可以做負(fù)載均衡,本質(zhì)上也是反向代理,反向代理的時(shí)候可以配置多個(gè)源服務(wù)器,而且在這個(gè)配置過程中還可以設(shè)置緩存、過期時(shí)間、負(fù)載均衡策略等。
- 當(dāng)然,nginx處理反向代理,還可以做限流等其他、靜態(tài)資源管理等其他用途。
從用途上來講
- 正向代理的典型用途是為在防火墻內(nèi)的局域網(wǎng)客戶端提供訪問Internet的途徑。正向代理還可以使用緩存特性減少網(wǎng)絡(luò)使用率。
- 反向代理的典型用途是將 防火墻后面的服務(wù)器提供給Internet用戶訪問。反向代理還可以為后端的多臺(tái)服務(wù)器提供負(fù)載平衡,或?yàn)楹蠖溯^慢的服務(wù)器提供緩存服務(wù)。
- 反向代理還可以啟用高級(jí)URL策略和管理技術(shù),從而使處于不同web服務(wù)器系統(tǒng)的web頁面同時(shí)存在于同一個(gè)URL空間下。
從安全性上來講
- 正向代理允許客戶端通過它訪問任意網(wǎng)站并且隱藏客戶端自身,因此你必須采取安全措施以確保僅為經(jīng)過授權(quán)的客戶端提供服務(wù)。
- 反向代理對外都是透明的,訪問者并不知道自己訪問的是一個(gè)代理。類似于,客戶端以為自己訪問的是直接服務(wù),但是實(shí)際上可能是一個(gè)反向代理服務(wù)。
本文部分內(nèi)容摘錄自:http://blog.csdn.net/m13666368773/article/details/8060481