反向代理服务器(或反向代理)促进用户对 Web 服务器/应用程序服务器的请求和服务器的响应。负载均衡器接收用户请求,将它们相应地分配给一组服务器,然后将每个服务器的响应转发给其各自的用户。从上面的简要定义可以看出,反向代理和负载均衡器有一些重叠的功能。
例如,它们都充当在客户端-服务器模型中转发请求和响应的中间节点。虽然它们在表面上看起来相似,但它们是两种不同的架构,在网络安全中扮演着不同的角色。本文详细解开反向代理和负载均衡器之间的差异,以消除两者之间的任何混淆。
什么是反向代理服务器?
反向代理服务器是用户和 Web 服务器之间的中间设备或应用程序。反向代理是一种代理服务器,旨在通过确保用户永远不会与原始服务器直接通信来增强 Web 服务器的安全性。
反向代理如何工作?
典型的反向代理操作如下:
- 用户发出HTTP请求(通过防火墙),例如将网站的 URL 输入到他们的 Web 浏览器中。
- 反向代理接收用户的请求。
- 反向代理“允许”或“拒绝”用户的请求。
- 如果允许,反向代理会将请求转发到 Web 服务器。如果被拒绝,它会向用户发送错误或重定向消息。
- Web 服务器将响应(网站数据)发送回反向代理。
- 反向代理将服务器的响应转发给用户。
反向代理从它们的配置方式接收它们的名称——“反向”到标准代理服务器(或正向代理)。正向代理位于用户和 Internet 之间,而反向代理位于网络边缘和 Internet 之间。
反向代理的类型
反向代理有硬件和软件两种形式。
有许多流行的开源反向代理软件解决方案,例如:
- Apache HTTP 服务器
- 阿帕奇交通服务器
- HAProxy
- NGINX
- 磅
- Træfɪk
- 清漆 HTTP 缓存
Web 应用程序防火墙 (WAF) 是一种反向代理,通常部署在商业用例中。WAF 监控 Web 流量并保护组织的 Web 应用程序免受网络攻击,例如SQL 注入、敏感数据盗窃、跨站点脚本和其他漏洞。另一种类型的反向代理是第 7 层负载均衡器。第 7 层负载均衡器将 Web 请求分发到多个服务器,以提高客户端网络性能和用户体验。
反向代理的好处
虽然反向代理的主要目标是保护服务器端操作,但它的功能为客户端和服务器都提供了好处。
增强的安全性
- 威胁防护:由于位于网络边缘,反向代理可防止恶意客户端直接访问和利用组织内部网络中的 任何漏洞。
- 隐私:反向代理隐藏源服务器的 IP 地址以增加数据安全性,防止 Internet 服务提供商 (ISP)、Web 服务和数据中心监控其流量并可能导致数据泄露。
- 过滤:它们能够将某些客户端 IP 地址列入黑名单并限制客户端可以发起的连接数量,这有助于防止DDoS 攻击。
负载均衡
组织可以使用反向代理在多个后端服务器之间均匀高效地分配流量。负载平衡有助于防止站点关闭,因为在发生网络中断或 DDoS 攻击时,流量可以重新路由到备用服务器(而不是依赖于一台服务器)。
网络加速
反向代理可实现更快的 Web 服务器响应时间,改善站点加载时间和用户体验。他们使用各种网络加速技术来实现更高的速度。
- 缓存:每次 Web 服务器发送响应时,反向代理都会存储它的本地副本。下次用户发出相同的请求时,代理可以直接响应用户,而不是把请求转发到 Web 服务器,减少了响应时间,也减轻了服务器的负载。
- 压缩:反向代理使用压缩算法来减少发送服务器响应所需的带宽,从而提高流量速度。
- SSL/TLS 卸载:反向代理可以对所有传入的请求和响应 执行 SSL加密和身份验证。
由于代理充当SSL连接的端点而不是 Web 服务器,因此 Web 服务器可以更快地提供内容。
什么是负载均衡器?
负载均衡器充当用户和一组服务器之间的中介。负载平衡器用于减轻高流量服务器的压力。它们将客户端请求路由到最合适的服务器,从而最大限度地提高网络速度和效率。通过确保运营效率,负载平衡器可帮助组织为其 IT 基础架构建立可扩展的基础。
负载均衡器如何工作?
通常,负载均衡器的操作如下:
- 用户发出请求,例如 HTTP 请求——将网站的 URL 输入到他们的 Web 浏览器中。
- 负载均衡器接收用户的请求。
- 负载均衡器将请求发送到一组不同服务器中的单个服务器。
- 所选服务器将响应(网站数据)发送回负载平衡器。
- 负载均衡器将服务器的响应转发给用户。
虽然上面的示例解释了负载均衡器如何处理 Web 请求,但负载均衡器可以支持许多其他协议,具体取决于它们的类型。负载均衡器选择将用户请求转发到哪个服务器的方式取决于它使用的算法。
负载平衡算法
负载平衡算法是一组规则,用于确定在一组不同的服务器中选择哪个服务器。
有几种类型的负载平衡算法。
- 哈希:根据预定义的密钥选择服务器,例如客户端的 IP 地址。
- 最少连接:向处理最少现有客户端连接的服务器发送请求。
- 最短响应时间:使用最快响应时间和最少活动连接的组合公式。
- 两种选择的力量:随机选择两台服务器,然后选择具有最少活动连接的服务器。
- Round Robin:以顺序方式在服务器之间分发请求。
负载均衡器的类型
负载均衡器按照它们使用的数字系统以及它们运行的开放系统互连 (OSI) 模型的特定层进行分类。
数字系统负载均衡器
硬件负载平衡器设备
硬件负载平衡器设备通常在数据中心中找到。它们是通常在传输层 (L4) 或应用层 (Layer 7) 上运行的物理设备。
软件负载均衡器 (SLB)
软件负载平衡器可作为负载平衡器即服务 (LBaaS) 购买,例如,作为应用交付控制器 (ADC) 的一个功能,或者可以直接安装到服务器上。
OSI 层的负载均衡器
应用程序负载均衡器(7 级负载均衡器或反向代理)
应用程序负载均衡器在 OSI 模型的第 7 层(最高层)上运行。它根据应用程序级变量(例如 URL、HTTP 标头和 SSL)分发 Web 请求。第 7 层负载均衡器是一个反向代理,因为它处理应用程序级别的请求——HTTP 运行的层。
网关负载均衡器
网关负载平衡器在第 3 层 (L3) 上运行。由于所有流量都流经一个入口和出口点,因此易于扩展。
全局服务器负载均衡器
全局服务器负载均衡器可以连接到世界各地的服务器。它响应来自地理上最接近请求用户的服务器的用户请求。
网络负载均衡器(四级负载均衡器)
网络负载平衡器在第 4 层 (L4) 上运行。它根据网络变量分配流量,包括 IP 协议、源 IP、源端口、目标 IP 和目标端口。
负载均衡器的好处
负载平衡器能够在多个高流量服务器之间有效地分配用户请求的能力为客户端-服务器模型提供了许多互惠互利的好处。
增强的用户体验
负载均衡器执行健康检查以识别服务器中断,然后将用户流量重新路由到正常运行的服务器。他们通过拦截给用户的错误响应消息或向服务器发送直接请求来进行健康检查,这些请求需要特定的响应来表明服务器是健康的。负载均衡器在服务器错误事件中的干预意味着用户体验到的错误消息要少得多并避免响应延迟。
更高的可靠性
负载均衡器在多服务器部署中实现,确保请求均匀高效地分布。通过防止服务器过载和流量瓶颈,负载均衡器为用户提供了更高的可靠性。许多服务器而不是单个服务器的可用性确保了用户请求仍然得到满足,即使在发生中断的情况下也是如此。
会话持久性
由于HTTP/S是一种无状态协议,会话持久性并不直观,但对于许多应用程序有效执行而言是必需的。例如,电子商务网站等 Web 应用程序依靠会话持久性来保持购物篮处于活动状态。负载平衡器确保特定用户(即来自特定 IP 地址)的请求在会话期间始终发送到同一台服务器。
反向代理和负载均衡器有什么区别?
反向代理和负载均衡器都提高了应用交付网络的性能,但它们在这种优化中扮演的角色并不完全相同。反向代理特别是 7 级负载均衡器,专门处理 Web 请求。负载均衡器可以在 OSI 模型的 3-7 级上运行,在 Web 请求之上处理多种类型的请求,例如 DNS、SSL、TCP。
反向代理可以执行负载均衡器的其他角色。例如,反向代理还可以:
- 作为 WAF 运行
- 执行 Web 加速,例如缓存、TLS/SSL 卸载、压缩
- 提供网络安全 机制,例如威胁防护、IP隐藏、网页过滤
负载均衡器的主要作用是将用户请求分发到多个服务器。反向代理可用于促进用户和单个服务器之间的请求。