代理,就是透過代理伺服器代替客戶端去訪問目標伺服器。而代理又分為正向代理和反向代理
Forward Proxy(正向代理)
客戶端透過代理伺服器去訪問應用端的目標伺服器
用途 :
-
突破訪問限制
常見如公司內部網路無法對外連線,而特殊需求的員工則可透過設定 Proxy 的方式連到外部網路 -
提高訪問速度
代理伺服器通常硬碟 buffer 都較大,會將部分 Response 存在 buffer,當有人再次透過 Proxy 訪問相同的訊息時,可以直接回傳給客戶端 -
隱藏客戶端真實IP
因為是透過代理伺服器,所以客戶端的IP並不會暴露讓外部知道
流程 :
- 客戶端要訪問目標伺服器,先發送Request給代理伺服器,並且指定目標
- 代理伺服器收到Request後會轉送Request給目標伺服器
- 目標伺服器將Reponse回傳給代理伺服器
- 代理伺服器再將Reponse回傳給客戶端
Reverse Proxy(反向代理)
應用端透過代理伺服器接收 Request,代理伺服器再將 Request 轉送給應用端內部的伺服器,並透過反向代理伺服器做負載平衡和安全性防護
用途 :
-
隱藏伺服器真實 IP
客戶端無法得知應用端真實伺服器的 IP -
負載均衡(load balance)
反向代理伺服器可以做負載均衡,根據所有真實伺服器的負載情況將客戶端分配到不同的真實伺服器 -
提高訪問速度
如同正向代理會在 buffer 儲存部分 Reponse 訊息可以直接回傳 -
提升安全性
反向代理伺服器可做為應用層的防火牆,替網站檔下基本的網頁攻擊(DOS、DDOS),也可替後端伺服器統一提供加密和 SSL、提供 Http 訪問認證等
流程 :
- 客戶端要訪問目標伺服器,先發送 Request 給反向代理伺服器
- 反向代理伺服器收到 Request 後會轉送 Request 給內部網路的伺服器,此時反向代理伺服器會依照各伺服器的負載量去決定該傳送 Request 給哪個伺服器,以達到負載均衡(前提是該應用有部署在多台伺服器上)
- 內部伺服器將 Reponse 回傳給反向代理伺服器
- 反向代理伺服器再將 Reponse 回傳給客戶端
Summary
正向代理 | 反向代理 | |
---|---|---|
代理目標 | 客戶端 | 應用端的伺服器 |
架設方 | 客戶端 | 應用端 |
影響 | 目標伺服器不知道客戶端是誰 | 客戶端不知道真正的目標伺服器是誰 |
用途 | 解決訪問限制 | 負載均衡、安全防護 |