HAProxy 和 Ngnix 在反向代理模式下有哪些区别?

HAProxy 和 Ngnix 在反向代理模式下有哪些区别?

HAProxy 和 Nginx 作为反向代理的能力有何区别?

答案1

2019 年更新:

它们都是稳定且成熟的产品。HAProxy 专注于负载平衡,并且在这方面表现更好,而 nginx 是一个可以充当负载平衡器的 Web 服务器。

两个都:

  • HTTPS 支持
  • Websocket 支持
  • 稳定、成熟、高效的产品
  • 几乎无需调整即可处理 10k 个连接

HAProxy的:

  • TCP、TCP-SSL、HTTP 和 HTTPS 负载平衡
  • 在健康检查和故障转移条件方面有更大的灵活性
  • 基本缓存(v1.8-2017)
  • 可自定义日志格式,将访问日志导入kibana/splunk/graylog
  • 详细状态页面,查看活动请求和服务器状态
  • 可导出指标,以便与监控解决方案集成(graphite/prometheus/datadog)
  • 更注重高性能。更适合处理 100k 个连接或 40 GbE 接口。

Nginx的:

  • HTTP 和 HTTPS 负载平衡(付费版本为 TCP - UDP)
  • 缓存更加灵活
  • 可自定义日志格式,将访问日志导入kibana/splunk/graylog
  • 无状态页面(仅限付费版本)
  • 没有可导出的指标(仅限付费版本)
  • 可以提供本地文件
  • 可以提供 FastCGI 应用程序(非 CGI)

HAProxy 是一款免费软件,完全开源。他们通过销售预装 HAProxy 的硬件设备赚钱。

Nginx 是开放核心,许多功能仅在付费版本中可用。值得注意的是,它缺乏状态页面和监控指标这对于操作负载均衡器来说是大忌。

答案2

HAProxy 实际上只是一个负载均衡器/反向代理。Nginx 是一个也可以充当反向代理的 Web 服务器。

以下是一些差异:

HAProxy的:

  • 是否支持 TCP 和 HTTP 代理(从 1.5-dev12 开始添加 SSL)
  • 更多速率限制选项
  • 作者在这里回答有关 Server Fault 的问题 ;-)

Nginx

  • 直接支持 SSL
  • 也是一个缓存服务器

在 Stack Overflow 我们主要使用 HAProxy 和 nginx 进行 SSL 卸载,因此我推荐使用 HAProxy。

答案3

我使用 nginx 作为 HAProxy 的前端,但仅用于 SSL 终止。

HAProxy 是一个更易于调整和管理的负载均衡器(根据我的经验)。

我还结合使用 Varnish 进行静态对象缓存。(作为 HAProxy 的特定后端)

请参阅此服务器故障问题以了解更多信息。 订购 nginx/varnish/haproxy

答案4

如果只需要负载平衡,HA 代理会更好。但是结合使用 nginix 和 HA 代理会更有用,因为 nginix 在提供静态内容方面速度很快,它将满足所有静态数据请求,然后将所有请求发送到充当负载平衡器的 HA 代理,并将请求发送到 Web 服务器以通过平衡负载来满足请求。

相关内容