說到tomcat叢集的搭建,現在常見的都是nginx進行負載均衡,搭建tomcat叢集,但要了解如何進行負載均衡首先有些基礎的知識需要學習,我們來研究下 伺服器的正向代理和反向代理
本文作用處圖檔引用自
http://blog.51cto.com/z00w00/1031287
1.正向代理
首先我們來看下面這張圖

-
關于正向代理的概念如下: 正向代理(forward)是一個位于用戶端【使用者A】和原始伺服器(origin
server)【伺服器B】之間的伺服器【代理伺服器Z】,為了從原始伺服器取得内容,使用者A向代理伺服器Z發送一個請求并指定目标(伺服器B),然後代
理伺服器Z向伺服器B轉交請求并将獲得的内容傳回給用戶端。用戶端必須要進行一些特别的設定才能使用正向代理。
是不是感覺很頭大,這麼長的概念,還很繞,其實舉個簡單例子
你就是A電腦,你現在想去國外的網站B看一些羞羞的東西,但是你沒辦法通路國外的網站,但是Z這台伺服器可以通路國外的羞羞網站,這時候你先告訴Z這個代理伺服器,你想看B的東西,Z便去拿你想看的B的内容,再将内容轉交給你,這便是正向代理了!
- 正向代理伺服器作用主要有以下幾點
以下幾點都是引用别人的總結,因為覺得寫得好,是以貼在這裡給大家分享,如有侵權,可以聯系我删除
1.通路本無法通路的伺服器B
就如上面舉的例子,下圖是從别人的部落格截圖過來的,因為很直覺形象
我們抛除複雜的網絡路由情節來看圖,假設圖中路由器從左到右命名為R1,R2,假 設最初使用者A要通路伺服器B需要經過R1和R2路由器這樣一個路由節點,如果路由器R1或者路由器R2發生故障,那麼就無法通路伺服器B了。但是如果使用者 A讓代理伺服器Z去代替自己通路伺服器B,由于代理伺服器Z沒有在路由器R1或R2節點中, 而是通過其它的路由節點通路伺服器B,那麼使用者A就可以得到伺服器B的資料了。現實中的例子就是“翻牆”。不過自從VPN技術被廣泛應用外,“翻牆”不但使用了傳統的正向代理技術,有的還使用了VPN技術
2.加速通路伺服器B
這種說法目前不像以前那麼流行了,主要是帶寬流量的飛速發展。早期的正向代理中,很多人使用正向代理就是提速。還是如圖假設使用者A到伺服器B,經過R1路由器和R2路由器,而R1到R2路由器的鍊路是一個低帶寬鍊路。而使用者A到代理伺服器Z,從代理伺服器Z到伺服器B都是高帶寬鍊路。那麼很顯然就可以加速通路伺服器B了。
3.Cache作用
Cache(緩存)技術和代理服務技術是緊密聯系的(不光是正向代理,反向代理也使用了Cache(緩存)技術。還如上圖所示,如果在使用者A通路伺服器B某資料J之前,已經有人通過代理伺服器Z通路過伺服器B上得資料J,那麼代理伺服器Z會把資料J儲存一段時間,如果有人正好取該資料J,那麼代理伺服器Z不再通路伺服器B,而把緩存的資料J直接發給使用者A。這一技術在Cache中術語就叫Cache命中。如果有更多的像使用者A的使用者來通路代理伺服器Z,那麼這些使用者都可以直接從代理伺服器Z中取得資料J,而不用千裡迢迢的去伺服器B下載下傳資料了。
4.用戶端通路授權
上圖防火牆作為網關,用來過濾外網對其的通路。假設使用者A和使用者B都設定了代理伺服器,使用者A允許通路網際網路,而使用者B不允許通路網際網路(這個在代理服 務器Z上做限制)這樣使用者A因為授權,可以通過代理伺服器通路到伺服器B,而使用者B因為沒有被代理伺服器Z授權,是以通路伺服器B時,資料包會被直接丢棄。
5.隐藏通路者的行蹤
如下圖 我們可以看出伺服器B并不知道通路自己的實際是使用者A,因為代理伺服器Z代替使用者A去直接與伺服器B進行互動。如果代理伺服器Z被使用者A完全控制(或不完全控制),會慣以“殭屍電腦”術語稱呼。![]()
【Nginx實作tomcat叢集】正向代理與反向代理
最後 我們總結一下,正向代理是一個位于用戶端和原始伺服器(origin server)之間的伺服器,為了從原始伺服器取得内容,用戶端向代理發送一個請求并指定目标(原始伺服器),然後代理向原始伺服器轉交請求并将獲得的内 容傳回給用戶端。用戶端必須設定正向代理伺服器,當然前提是要知道正向代理伺服器的IP位址,還有代理程式的端口。
2.反向代理
我們先看下很學術的解釋
-
反向代理正好與正向代理相反,對于用戶端而言代理伺服器就像是原始伺服器,并且用戶端不需要進行任何特别的設定。用戶端向反向代理的命名空間(name-space)中的内容發送普通請求,接着反向代理将判斷向何處(原始伺服器)轉交請求,并将獲得的内容傳回給用戶端。
見下圖
這裡舉個通俗的例子就是【Nginx實作tomcat叢集】正向代理與反向代理 -
你現在是A
你給10086客服打電話,但是10086這個号碼背後有許多的客服小姐姐,你根本不知道哪個小姐姐會給你解答疑惑,這樣的10086客服就是反向代理的伺服器
我們注意到 正向代理和反向代理的差別在于
- 正向代理 你需要告訴代理伺服器z 你去B給我拿我要的東西,而反向代理,你不知道反向代理的伺服器背後的是哪一位小姐姐給你服務!
反向代理伺服器的作用如下
1.保護和隐藏原始資源伺服器
使用者A始終認為它通路的是原始伺服器B而不是代理伺服器Z,但實用際上反向代理伺服器接受使用者A的應答,從原始資源伺服器B中取得使用者A的需求資源,然後發送給使用者A。由于防火牆的作用,隻允許代理伺服器Z通路原始資源伺服器B。盡管在這個虛拟的環境下,防火牆和反向代理的共同作用保護了原始資源伺服器B,但使用者A并不知情。
2.負載均衡
當反向代理伺服器不止一個的時候,我們甚至可以把它們做成叢集,當更多的使用者通路資源伺服器B的時候,讓不同的代理伺服器Z(x)去應答不同的使用者,然後發送不同使用者需要的資源。
當然反向代理伺服器像正向代理伺服器一樣擁有CACHE的作用,它可以緩存原始資源伺服器B的資源,而不是每次都要向原始資源伺服器B請求資料,特别是一些靜态的資料,比如圖檔和檔案,如果這些反向代理伺服器能夠做到和使用者X來自同一個網絡,那麼使用者X通路反向代理伺服器X,就會得到很高品質的速度。這正是CDN技術的核心。如下圖