文章目錄
- Web代理服務
- 反向代理
- 反向代理作用
Web代理服務
Web 代理服務指的是在客戶端資源請求和提供這些資源的 Web 服務之間充當中介的角色,代理服務可以實現在客戶端,或者從客戶端到目標服務器中間的任意環節。
例如,客戶端不直接向提供目標資源的 Web 服務發起請求,而是帶上目標資源的完整 URL 去請求代理服務:
GET http://en.wikipedia.org/wiki/Proxy_server HTTP/1.1
Accept: text/html
代理服務收到之后,(由代理服務來)請求指定資源并將響應結果轉發給客戶端:
HTTP/1.1 200 OK
Content-Type: text/html; charset UTF-8
反向代理
“反向”自然是相對“正向”來說的,那么,首先要知道什么是正向代理?
正向代理是對外的,面向外部資源,用來從網絡上獲取各種數據:代客戶端發出資源請求,并將響應結果返回給對應的客戶端。所以,正向代理更靠近客戶端,與客戶端的關系更密切(跟服務器關系一般,不熟)
反向代理負責把流量根據配置規則重定向到內部服務器,外部請求并不知道內網的存在,反向代理是對內的,面向內部資源,用作對私有網絡上的服務器進行訪問控制和保護的前端。所以,反向代理更靠近服務器,與服務器的關系不一般,并且只提供有限的一些資源(不像正向代理能從網絡獲取各種資源)。
并且這種代理關系對用戶來說是一定是透明的,因為用戶不知道連接的是源服務還是代理服務。
而用戶對正向代理通常是有感知的,明確知道自己正在通過代理訪問網絡資源。
除正向、反向代理之外,還有:
- 開放代理(Open proxy):面向公眾(任何人都可以訪問)的正向代理
- 匿名代理(Anonymous proxy):不公開客戶端原始 IP 地址的代理服務
- 透明代理(Transparent proxy):透傳請求和響應,不做任何修改,用作網關(Gateway)和路由器
從方向上看,正向代理代表客戶端請求資源,反向代理代表服務器提供資源:
總結來說:正向代理代表客戶端,而反向代理代表服務器
反向代理作用
反向代理常用于以下場景:
- 加密/SSL 加速:將 SSL 加密的工作交由配備了 SSL 硬件加速器的反向代理來完成
- 負載均衡:將流量負載分發給多個 Web 服務器
- 托管/緩存靜態內容:將靜態內容(比如圖片)交由反向代理提供,分擔源站負載
- 壓縮:代理服務器能夠對資源內容進行壓縮優化,提升加載速度
- 安全防護:能夠屏蔽源服務器的存在及其特征,結合防火墻抵御常見 Web 攻擊
- 訪問控制:對內容進行監控/過濾,常用于工作場所、學校等