0%

Proxy - 代理伺服器

代理,就是透過代理伺服器代替客戶端去訪問目標伺服器。而代理又分為正向代理和反向代理

Forward Proxy(正向代理)

客戶端透過代理伺服器去訪問應用端的目標伺服器

Forward Proxy

用途 :

  • 突破訪問限制
    常見如公司內部網路無法對外連線,而特殊需求的員工則可透過設定 Proxy 的方式連到外部網路

  • 提高訪問速度
    代理伺服器通常硬碟 buffer 都較大,會將部分 Response 存在 buffer,當有人再次透過 Proxy 訪問相同的訊息時,可以直接回傳給客戶端

  • 隱藏客戶端真實IP
    因為是透過代理伺服器,所以客戶端的IP並不會暴露讓外部知道

流程 :

  1. 客戶端要訪問目標伺服器,先發送Request給代理伺服器,並且指定目標
  2. 代理伺服器收到Request後會轉送Request給目標伺服器
  3. 目標伺服器將Reponse回傳給代理伺服器
  4. 代理伺服器再將Reponse回傳給客戶端

Reverse Proxy(反向代理)

應用端透過代理伺服器接收 Request,代理伺服器再將 Request 轉送給應用端內部的伺服器,並透過反向代理伺服器做負載平衡和安全性防護

Reverse Proxy

用途 :

  • 隱藏伺服器真實 IP
    客戶端無法得知應用端真實伺服器的 IP

  • 負載均衡(load balance)
    反向代理伺服器可以做負載均衡,根據所有真實伺服器的負載情況將客戶端分配到不同的真實伺服器

  • 提高訪問速度
    如同正向代理會在 buffer 儲存部分 Reponse 訊息可以直接回傳

  • 提升安全性

反向代理伺服器可做為應用層的防火牆,替網站檔下基本的網頁攻擊(DOS、DDOS),也可替後端伺服器統一提供加密和 SSL、提供 Http 訪問認證等

流程 :

  1. 客戶端要訪問目標伺服器,先發送 Request 給反向代理伺服器
  2. 反向代理伺服器收到 Request 後會轉送 Request 給內部網路的伺服器,此時反向代理伺服器會依照各伺服器的負載量去決定該傳送 Request 給哪個伺服器,以達到負載均衡(前提是該應用有部署在多台伺服器上)
  3. 內部伺服器將 Reponse 回傳給反向代理伺服器
  4. 反向代理伺服器再將 Reponse 回傳給客戶端

Summary

正向代理 反向代理
代理目標 客戶端 應用端的伺服器
架設方 客戶端 應用端
影響 目標伺服器不知道客戶端是誰 客戶端不知道真正的目標伺服器是誰
用途 解決訪問限制 負載均衡、安全防護

參考

[1] 終於有人把正向代理和反向代理解釋的明明白白了