關於“代理”,你真的清楚嗎?

小郭在當初學習前端的時候看到代理這個詞很是詫異,代理是什麼?前端為什麼要學這個呀?

帶著這些疑問去翻閱了很多資料,終於搞明白“代理”原來如此。時隔許久,在上次分享文章《整理前端最全跨域方案,工作面試不用愁(下)》中涉及到Nginx反向代理解決跨域問題,終於再次喚起我曾經對“代理”學習的回憶。現在總結一篇文章分享給大家,避免大家再走彎路。

說到代理,首先我們要明確一個概念,所謂代理就是一個代表、一個渠道;此時涉及到兩個角色,一個是被代理角色,一個是目標角色,被代理角色通過這個代理訪問目標角色完成一些任務的過程稱為代理操作過程;

舉個例子:比如生活中的專賣店~客人到adidas專賣店買了一雙鞋,這個專賣店就是代理,被代理角色就是adidas廠家,目標角色就是用戶。

關於“代理”,你真的清楚嗎?

正向代理

原理:是一個位於客戶端和目標服務器之間的服務器(代理服務器),為了從目標服務器取得內容,客戶端向代理服務器發送一個請求並指定目標,然後代理服務器向目標服務器轉交請求並將獲得的內容返回給客戶端。

原理太乏味,直接上圖


關於“代理”,你真的清楚嗎?

正向代理

應用

  • 突破訪問限制
    通過代理服務器,可以突破自身IP訪問限制,訪問國外網站,教育網等。簡單理解,租客可以通過中介,來解決無法聯繫上房東的問題。
  • 提高訪問速度
    通常代理服務器都設置一個較大的硬盤緩衝區,會將部分請求的響應保存到緩衝區中,當其他用戶再訪問相同的信息時, 則直接由緩衝區中取出信息,傳給用戶,以提高訪問速度。簡單理解,中介手裡留存了很多房源信息和鑰匙,可以直接帶租客去看房。
  • 隱藏客戶端真實IP
    上網者也可以通過這種方法隱藏自己的IP,免受攻擊。簡單理解,房東並不知道租客的真實身份。但是中介知道了,可能騷擾更多….

反向代理

原理:

是指以代理服務器來接受internet上的連接請求,然後將請求轉發給內部網絡上的服務器,並將從服務器上得到的結果返回給internet上請求連接的客戶端,此時代理服務器對外就表現為一個反向代理服務器。

還是直接上圖吧!


關於“代理”,你真的清楚嗎?

反向代理

應用:

  • 隱藏服務器真實IP
    使用反向代理,可以對客戶端隱藏服務器的IP地址。簡單理解,租客並不房東知道的真實身份。
  • 負載均衡
    反向代理服務器可以做負載均衡,根據所有真實服務器的負載情況,將客戶端請求分發到不同的真實服務器上。簡單理解,二房東發現房主本人很忙,於是找到房主的妻子幫忙處理租房事宜。
  • 提高訪問速度
    反向代理服務器可以對於靜態內容及短時間內有大量訪問請求的動態內容提供緩存服務,提高訪問速度。簡單理解,二房東同樣有房屋信息和鑰匙。
  • 提供安全保障
    反向代理服務器可以作為應用層防火牆,為網站提供對基於Web的攻擊行為(例如DoS/DDoS)的防護,更容易排查惡意軟件等。還可以為後端服務器統一提供加密和SSL加速(如SSL終端代理),提供HTTP訪問認證等。簡單理解,二房東可以有效的保護房東的安全。

正、反向代理對比

  1. 正向代理其實是客戶端的代理,幫助客戶端訪問其無法訪問的服務器資源。反向代理則是服務器的代理,幫助服務器做負載均衡,安全防護等。
  2. 正向代理一般是客戶端架設的,比如在自己的機器上安裝一個代理軟件。而反向代理一般是服務器架設的,比如在自己的機器集群中部署一個反向代理服務器。
  3. 正向代理中,服務器不知道真正的客戶端到底是誰,以為訪問自己的就是真實的客戶端。而在反向代理中,客戶端不知道真正的服務器是誰,以為自己訪問的就是真實的服務器。
  4. 正向代理和反向代理的作用和目的不同。正向代理主要是用來解決訪問限制問題。而反向代理則是提供負載均衡、安全防護等作用。二者均能提高訪問速度。

現在大家應該可以清晰的區別出正代理與反向代理的特徵,不會再暈頭轉向。


分享到:


相關文章: