第一次接觸代理是在大二計算機網絡課堂中,通由代理服務器可以讓網絡訪問更具伸縮性,可以拒絕訪問某些網站和協助訪問被和諧的網站。最近無意中接觸了反向代理,有對比正好有機會可以搞清楚前向代理和反向代理着兩個概念。
前向代理 一般提到的是前向代理。表面上客戶端 C 可以直接訪問服務器 S,但實際上 C 在訪問 S 的時候經過了中間的另一個中間的服務器 M,M就是代理服務器。為什么說是前向代理?因為前向代理是面向客戶端的,而不是服務器。M 接收了 C 的請求后,(有選擇的)對請求進行簡化或者其他處理,再向目標服務器請求數據。
C-------------M-------------S
-
- 前向代理
對請求進行簡化或者其他處理意味着可以無視某些請求,譬如:學校發現 abc.com 站點上的內容很黃很暴力,為了在校學生的身心健康,在學校的代理服務器上對 abc.com 做限制,於是學生就不能訪問 abc.com 站點了,也可以說 abc.com 被和諧了。除此之外,前向代理還有:
- 訪問被和諧的站點,譬如翻牆等
- 隱藏客戶端,真正與服務器打交道的是前向代理
- 提高訪問速度,前向代理的緩存功能
關於前向代理,我們不得不熟悉聞名遐邇的 goagent 了。goagent 將 Google App Engine GAE 作為代理服務器中轉,從而突破圍牆。
反向代理 與前向代理相反,反向代理面向服務器,對於客戶端 C 訪問服務器 S 而言,好像 A 真的再訪問 S 一樣,其實真正的服務器是在 S 后面的 M.
C-------------S-------------M
-
- 反向代理
所以,這幅圖已經告訴我們反向代理能做些什么:
- 負載均衡,真正處理業務邏輯的是再往后的 web 服務器
- 加速訪問靜態內容,和前向代理一樣有緩存的功能
- 隱藏真實服務器,客戶端不知道真正后台服務器是怎么樣的....
在這里要提一下 CDN 內容分發網絡,反向代理可以是 CDN 的一種實現原理。為此,找到一幅好圖:
從圖中可以看到 www.yourdomain.com 設置有三個節點,USA、EU、APAC。這三個節點可以緩存一些靜態內容,從而減輕后端服務器壓力。當然,這只是原理,其中還很多很牛犇的技術在里面。歡迎補充。
搗亂 2013-08-01
http://daoluan.net/blog