# 相关产品与替代方案

> HAProxy 与 Apache、NGINX、Varnish、LVS、Envoy 及其他负载均衡器的关系

---

LLMS 索引： [llms.txt](/zh/llms.txt)

---

<!-- Generated by scripts/generate-haproxy-docs.py from pinned upstream text. -->

HAProxy 与以下列出的某些产品集成良好，因此尽管这些产品与 HAProxy 无直接关联，仍在此提及。

## 4.1. Apache HTTP 服务器 {#section-4-1}

Apache 是事实上的标准 HTTP 服务器。它是一个功能完整且模块化的项目，支持静态文件服务和动态内容处理。Apache 可以作为某些应用服务器的前端。它甚至可以代理请求并缓存响应。在所有这些使用场景中，通常需要一个前端负载均衡器。Apache 可以在多种模式下运行，其中某些模式的开销较大。某些模块仍需依赖开销较大的预派生模型，这将导致 Apache 在连接数较高时难以良好扩展。在此情况下，HAProxy 可通过将每台服务器的连接数限制强制设定为安全值，显著提升服务器性能，并有效保护服务器资源，使这些资源能更高效地被应用程序利用。

Apache 可通过使用 "mod_rpaf" 扩展从 X-Forwarded-For 头中提取客户端地址。当 HAProxy 配置中指定 "option forwardfor" 时，HAProxy 会自动填充该头。当 Apache 暴露于互联网时，HAProxy 还可提供良好防护，使其更能抵御多种类型的拒绝服务攻击。

## 4.2. NGINX {#section-4-2}

NGINX 是另一款事实标准级 HTTP 服务器。与 Apache 类似，它涵盖了广泛的特性。NGINX 的架构与 HAProxy 类似，因此能够轻松处理数以万计的并发连接。当作为某些应用（例如使用内置的 PHP FPM）的网关时，设置前端连接限制通常有助于减轻 PHP 应用的负载。在此场景中，HAProxy 作为常规负载均衡器以及流量调节器，均可发挥显著作用，通过缓解拥堵来提升 PHP 处理速度。此外，由于两款产品均基于事件驱动架构，CPU 占用率极低，因此通常可轻松在同一系统上同时部署。NGINX 实现了 HAProxy 的 PROXY 协议，使得 HAProxy 能够将客户端连接信息传递给 NGINX，从而确保应用获取全部相关上下文信息。部分基准测试还表明，对于大规模静态文件服务，若在 NGINX 前端的 HAProxy 上实现一致性 URL 哈希，可通过优化操作系统的缓存命中率带来性能提升，该命中率基本与服务器节点数量成倍数关系。

## 4.3. Varnish {#section-4-3}

Varnish 是一款智能缓存反向代理，可被描述为 Web 应用加速器。Varnish 不实现 SSL/TLS，而是希望将全部 CPU 周期专注于其最擅长的任务。Varnish 还实现了 HAProxy 的 PROXY 协议，因此 HAProxy 可以非常容易地部署在 Varnish 前端，作为 SSL 卸载器、负载均衡器，并传递所有相关的客户端信息。

此外，当服务器提供已压缩的对象时，Varnish 可自然支持从缓存中解压缩，但本身不执行压缩。HAProxy 可用于在后端服务器未实现压缩时对传出数据进行压缩，但除非流量较低，否则通常不建议在负载均衡器上进行压缩。

在跨多个节点构建大型缓存集群时，HAProxy 可利用一致的 URL 哈希机制，智能地将负载分发至缓存节点，避免缓存重复，从而实现总缓存容量为所有缓存节点容量之和。此外，在 HAProxy 上对极小的简单对象进行短时缓存，有时可减少网络往返次数，并降低 HAProxy 与 Varnish 节点的 CPU 负载。此功能仅在 Varnish 上不对这些对象执行任何处理时才可启用（这通常被称为“favicon 缓存”概念，借此可避免相当比例的无用下游请求）。然而，切勿在任何其他缓存前长期启用 HAProxy 缓存（超过几秒），否则将显著增加故障排查难度，且无法带来真正可观的性能收益。

## 4.4. 替代方案 {#section-4-4}

Linux 虚拟服务器（LVS 或 IPVS）是内置于 Linux 内核中的第 4 层负载均衡器。它在数据包层面工作，支持 TCP 和 UDP。在大多数情况下，它更像是一种补充而非替代方案，因为它完全不具备第 7 层知识。

Pound 是另一款广为人知的负载均衡器。相较于 HAProxy，它更加简单，功能也少得多，但在许多基础配置场景下，两者均可使用。其作者始终将代码可审计性放在首位，并致力于保持功能集的精简。Pound 采用基于线程的架构，在高连接数场景下的扩展性较差，但仍是值得信赖的产品。

Pen 是一款轻量级负载均衡器。它支持 SSL，通过固定大小的客户端 IP 地址表维持会话持久性。它支持面向数据包的模式，可在一定程度上实现直接服务器返回和 UDP 支持。该负载均衡器适用于低负载场景（会话持久性表仅包含 2048 个条目）。

NGINX 可在一定程度上实现负载均衡，尽管这显然并非其主要功能。
生产流量用于检测服务器故障，负载均衡算法较为有限，会话粘性也极为有限。但在某些已有 NGINX 的简单部署场景中，此举仍具合理性。值得庆幸的是，由于 NGINX 与 HAProxy 集成良好，当 NGINX 的能力达到极限时，后续添加 HAProxy 也完全可行。

Varnish 也对后端服务器执行负载均衡，并支持真正的健康检查。然而，它不支持会话粘性，因此与 NGINX 类似，只要不需要会话粘性，仅凭这些功能通常已足够起步。同样，由于 HAProxy 与 Varnish 集成效果极佳，后续很容易将其加入现有架构中，以补充功能集。
