反向代理
外观
反向代理(Reverse proxy)在电脑网路中是代理伺服器的一种。伺服器根据客户端的请求,从其关联的一组或多组后端服务器(如Web服务器)上获取资源,然后再将这些资源返回给客户端,客户端只会得知反向代理的IP位址,而不知道在代理伺服器后面的伺服器丛集的存在[1]。
与前向代理不同,前向代理作为客户端的代理,将从互联网上获取的资源返回给一个或多个的客户端,伺服器端(如Web服务器)只知道代理的IP位址而不知道客户端的IP位址;而反向代理是作为服务器端(如Web服务器)的代理使用,而不是客户端。客户端借由前向代理可以间接访问很多不同网际网路伺服器(丛集)的资源,而反向代理是供很多客户端都通过它间接访问不同后端服务器上的资源,而不需要知道这些后端服务器的存在,而以为所有资源都来自于这个反向代理服务器。
反向代理在现时的网际网路中并不少见,而另一些例子,像是CDN、SNI代理等,是反向代理结合DNS的一类延伸应用。
功能
[编辑]反向代理的主要作用为:
- 对客户端隐藏伺服器(丛集)的IP位址
- 安全:作为应用层防火墙,为网站提供对基于Web的攻击行为(例如DoS/DDoS)的防护,更容易排查恶意软体等
- 为后端伺服器(丛集)统一提供加密和SSL加速(如SSL终端代理)
- 负载平衡,若伺服器丛集中有负荷较高者,反向代理通过URL重写,根据连线请求从负荷较低者获取与所需相同的资源或备援
- 对于静态内容及短时间内有大量存取请求的动态内容提供快取服务
- 对一些内容进行压缩,以节约频宽或为网路频宽不佳的网路提供服务
- 减速上传
- 为在私有网路下(如区域网路)的伺服器丛集提供NAT穿透及外网发布服务
- 提供HTTP存取认证[2]
- 突破互联网封锁
常见反向代理软体
[编辑]- Nginx、Tengine
- Apache HTTP Server
- Varnish cache
- Squid Cache
- Traffic Server
- HAProxy
- YXORP
- Polipo
- Privoxy
- IIS
- Caddy
另见
[编辑]参考文献
[编辑]- ^ Forward and reverse proxies. The Apache Software Foundation. [2011-02-09]. (原始内容存档于2011-02-10).
- ^ Possible to add basic HTTP access authentication via HAProxy?. serverfault.com. [2018-02-22]. (原始内容存档于2018-10-04).