什么是反向代理?

更新于 2026-01-27

反向代理用于提供负载均衡服务,并且越来越多地通过 Web 应用防火墙(WAF)、应用交付防火墙(ADF)和深度内容检查,在网络中的战略性插入点强制实施 Web 应用安全策略。

什么是反向代理?

在网络和 Web 流量中,代理(proxy)是一种代表其他设备执行操作的设备或服务器。它位于两个实体之间并执行某种服务。代理可以是硬件或软件解决方案,位于客户端与服务器之间,用于管理请求,有时也管理响应。

通常,反向代理服务器部署在 Web 服务器前方,将客户端(例如 Web 浏览器)的请求转发给这些 Web 服务器。随后,所请求的资源会返回给客户端,看起来就像是直接来自代理服务器本身一样。这提供了额外一层抽象和控制,以确保客户端与服务器之间的网络流量顺畅流动。反向代理还能够根据多种参数(如用户设备、地理位置、网络状况、应用程序健康状态,甚至一天中的时间)来定向请求。

反向代理与负载均衡器有何区别?

反向代理服务器和负载均衡器都是客户端-服务器计算架构中的组件。两者都在客户端与服务器之间的通信中充当中介,执行提高效率的功能。它们既可以作为专用的、目的明确的设备实现,但在现代 Web 架构中,越来越多地作为运行在通用硬件上的软件应用程序来部署。尽管它们看似执行类似的功能,但让我们探讨一下它们通常在网站中何时以及为何被部署。

负载均衡器的作用是将传入的客户端请求分发到一组服务器上,以确保令人满意的响应速度和优化的运行性能。当某个站点因请求量过大而单台服务器无法高效处理时,通常会部署多台服务器,此时就需要使用负载均衡器。部署多台服务器还可以消除单点故障,从而提高网站的可靠性。最常见的情况是,所有服务器都托管相同的内容,而负载均衡器的任务是以最佳方式分配工作负载,充分利用每台服务器的容量,防止任何服务器过载,并尽可能快速地向客户端返回响应。

反向代理则接受来自客户端的请求,将其转发给能够处理该请求的服务器,并将服务器的响应返回给客户端。与负载均衡器仅在拥有多个服务器时才有意义不同,即使只有一个 Web 服务器或应用服务器,部署反向代理也常常是有意义的。你可以将反向代理视为网站的“公众面孔”:网站对外公布的地址就是反向代理的地址,它位于网站网络的边缘,用于接收来自 Web 浏览器和移动应用对网站托管内容的请求。反向代理提供了额外一层抽象和控制,以确保客户端与服务器之间网络流量的顺畅流动。反向代理提供以下功能:

  • 增强安全性:你的后端服务器信息在内部网络之外不可见,因此恶意客户端无法直接访问它们以利用潜在漏洞。许多反向代理服务器包含有助于保护后端服务器免受分布式拒绝服务(DDoS)攻击的功能,例如通过拒绝来自特定客户端 IP 地址的流量(黑名单),或限制每个客户端可建立的连接数量。
  • 提升可扩展性与灵活性:由于客户端只能看到反向代理的 IP 地址,你可以自由更改后端基础设施的配置。这在负载均衡环境中尤其有用,你可以根据流量波动动态增减服务器数量。
  • Web 加速:反向代理可通过 SSL 加速、智能压缩和缓存等技术,减少生成响应并将其返回给客户端所需的时间,从而提升性能。反向代理还能通过强制实施 Web 应用安全策略,为多个应用程序提供联合安全服务。

为什么反向代理很重要?

反向代理用于提供负载均衡服务,以交付更流畅的 Web 体验,并且越来越多地通过 Web 应用防火墙、应用交付防火墙和深度内容检查,在网络中的战略性插入点强制实施 Web 应用安全策略。

当与云部署结合使用时,反向代理可以支持“云爆发”(cloud bursting)和拆分式应用架构(split-application architectures),在不牺牲控制力或安全性的情况下,实现云计算的经济效益。

反向代理如何工作?

反向代理既可以作为简单的转发服务,也可以积极参与客户端与服务器之间的交互。当代理通过实现双网络协议栈,将客户端和服务器视为独立实体时,就称为全代理(full proxy)。

全代理会创建一个 TCP 客户端连接,同时创建一个独立的 TCP 服务器连接,两者中间存在一个小间隙。客户端在一端连接到代理,而代理则在另一端建立一个独立、分离的连接到服务器。这种连接是双向的。客户端侧的连接与服务器侧的连接永远不会混合,因为它们是完全独立的。