反向代理
反向代理在電腦網路中是代理伺服器的一種。伺服器根据客户端的请求,从其關聯的一組或多組后端服务器(如Web服务器)上获取资源,然后再将这些资源返回给客户端,客户端只會得知反向代理的IP位址,而不知道在代理伺服器後面的伺服器叢集的存在[1]。

互联网中的请求发送给反向代理,反向代理把请求转发到内网中的服务器。
与前向代理不同,前向代理作为客户端的代理,將從互联网上获取的资源返回给一個或多個的客户端,伺服器端(如Web服务器)只知道代理的IP位址而不知道客户端的IP位址;而反向代理是作为服务器端(如Web服务器)的代理使用,而不是客户端。客户端藉由前向代理可以間接访问很多不同網際網路伺服器(叢集)的资源,而反向代理是供很多客户端都通过它間接访问不同后端服务器上的资源,而不需要知道这些后端服务器的存在,而以为所有资源都来自于这个反向代理服务器。
功能
反向代理的主要作用为:
- 對客户端隱藏伺服器(叢集)的IP位址
- 安全:作為應用層防火牆,為網站提供對基於Web的攻擊行爲(例如DoS/DDoS)的防護,更容易排查惡意軟體等
- 為後端伺服器(叢集)統一提供加密和SSL加速(如SSL終端代理)
- 负载均衡,若伺服器叢集中有負荷較高者,反向代理通過URL重寫,根據連線請求從負荷較低者獲取與所需相同的資源或備援
- 對於靜態內容及短時間內有大量存取請求的動態內容提供快取服務
- 對一些內容進行压缩,以節約頻寬或為網路頻寬不佳的網路提供服務
- 减速上传
- 為在私有網路下(如區域網路)的伺服器叢集提供NAT穿透及外网发布服務
- 提供HTTP存取認證[2]
- 突破互联网封锁(不常用,因為反向代理與客户端之間的連線不一定是加密連線,非加密連線仍有遭內容審查進而遭封禁的風險;此外面對針對網域名稱的關鍵字過濾、DNS快取污染/投毒攻擊乃至深度封包檢測也無能爲力)
常見反向代理軟體
- Nginx、Tengine
- Apache HTTP Server
- Varnish cache
- Squid Cache
- Traffic Server
- HAProxy
- YXORP
- Polipo
- Privoxy
- IIS
另見
- 伺服器名稱指示
参考文献
This article is issued from Wikipedia. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.