反向代理
反向代理(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).