1、正向代理(forward)是一個位于客戶端和原始服務(wù)器(origin server)之間的服務(wù)器,為了從原始服務(wù)器取得內(nèi)容,客戶端向代理發(fā)送一個請求并指定目標(biāo)(原始服務(wù)器),然后代理向原始服務(wù)器轉(zhuǎn)交請求并將獲得的內(nèi)容返回給客戶端?蛻舳吮仨氁M(jìn)行一些特別的設(shè)置才能使用正向代理。
2、反向代理(reverse proxy)正好相反,對于客戶端而言它就像是原始服務(wù)器,并且客戶端不需要進(jìn)行任何特別的設(shè)置?蛻舳讼蚍聪虼淼拿臻g(name-space)中的內(nèi)容發(fā)送普通請求,接著反向代理將判斷向何處(原始服務(wù)器)轉(zhuǎn)交請求,并將獲得的內(nèi)容返回給客戶端,就像這些內(nèi)容原本就是它自己的一樣。
3、兩者區(qū)別
從用途上來講:正向代理的典型用途是為在防火墻內(nèi)的局域網(wǎng)客戶端提供訪問Internet的途徑,正向代理還可以使用緩沖特性減少網(wǎng)絡(luò)使用率。反向代理的典型用途是將防火墻后面的服務(wù)器提供給Internet用戶訪問,反向代理還可以為后端的多臺服務(wù)器提供負(fù)載平衡,或為后端較慢的服務(wù)器提供緩沖服務(wù)。另外,反向代理還可以啟用高級URL策略和管理技術(shù),從而使處于不同web服務(wù)器系統(tǒng)的web頁面同時存在于同一個URL空間下。
從安全性來講:正向代理允許客戶端通過它訪問任意網(wǎng)站并且隱藏客戶端自身,因此你必須采取安全措施以確保僅為經(jīng)過授權(quán)的客戶端提供服務(wù)。反向代理對外都是透明的,訪問者并不知道自己訪問的是一個代理。而squid是一個forword/reverse proxy,兩個功能兼?zhèn)洌话憧梢宰鳛榫钟蚓W(wǎng)的上網(wǎng)緩存,此時作為正向代理。一般服務(wù)器會讓squid作為前端,那就是充當(dāng)反向代理,反向代理有很多軟件都可以,比如nginx、lighttpd,但他們兩個一般做不了正向代理。
4、透明代理(簡單代理):透明代理的意思是客戶端根本不需要知道有代理服務(wù)器的存在,它改編你的request fields (報文),并會傳送真實IP。注意,加密的透明代理則是屬于匿名代理,意思是不用設(shè)置使用代理了,例如Garden 2程序。
如何使用透明代理
透明代理技術(shù)中的透明是指客戶端感覺不到代理的存在,不需要在瀏覽器中設(shè)置任何代理,客戶只需要設(shè)置缺省網(wǎng)關(guān),客戶的訪問外部網(wǎng)絡(luò)的數(shù)據(jù)包被發(fā)送到缺省網(wǎng)關(guān),而這時缺省網(wǎng)關(guān)運行有一個代理服務(wù)器,數(shù)據(jù)實際上被被重定向到代理服務(wù)器的代理端口(如8080),即由本地代理服務(wù)器向外請求所需數(shù)據(jù)然后拷貝給客戶端。理論上透明代理可以對任何協(xié)議通用。但是在這種情況下客戶端必須正確設(shè)置DNS服務(wù)器。因為現(xiàn)在瀏覽器不設(shè)置任何代理。則DNS查詢必須由browser來解析,也就是要由客戶端必須在TCP/IP中設(shè)置的正確的DNS服務(wù)器,其完成dns解析。私有網(wǎng)地址為192.168.1.*, 其中客戶機(jī)是192.168.1.100,防火墻機(jī)器網(wǎng)卡是192.168.1.1。透明web代理被安裝在防火墻機(jī)器上并配置端口為8080。內(nèi)核使用iptables把與防火墻端口80的連接重定向到代理服務(wù)。
5、透明模式的防火墻就好象是一臺網(wǎng)橋(非透明的防火墻好象一臺路由器),網(wǎng)絡(luò)設(shè)備(包括主機(jī)、路由器、工作站等)和 所有計算機(jī)的設(shè)置(包括IP地址和網(wǎng)關(guān))無須改變,同時解析所有通過它的數(shù)據(jù)包,既增加了網(wǎng)絡(luò)的安全性,又降低了用戶管理的復(fù)雜程度。防火墻使用透明代理技術(shù),這些代理服務(wù)對用戶也是透明的,用戶意識不到防火墻的存在,便可完成內(nèi)外網(wǎng)絡(luò)的通訊。一般使用代理服務(wù)器時,每個用戶需要在客戶端程序中指明要使用代理,自行設(shè)置Proxy參數(shù)(如在瀏覽器中有專門的設(shè)置來指明HTTP或FTP等的代理)。而透明代理服務(wù),用戶不需要任何設(shè)置就可以使用代理服務(wù)器,簡化了網(wǎng)絡(luò)的設(shè)置過程。