反向代理模式下HAProxy和Ngnix有什么区别?


Answers:


5

2019更新:

它们都是稳定和成熟的产品。HAProxy专门用于负载平衡,并在此方面做得更好,而nginx是可​​以充当负载平衡器的Web服务器。

都:

  • HTTPS支持
  • Websocket支持
  • 稳定,成熟且高效的产品
  • 只需很少的调整或无需调整,即可处理10k的连接

HAProxy:

  • TCP,TCP-SSL,HTTP和HTTPS负载平衡
  • 运行状况检查和故障转移条件的灵活性更高
  • 基本缓存(v1.8-2017)
  • 可自定义的日志格式,用于将访问日志导入到kibana / splunk / graylog
  • 详细状态页面,查看活动请求和服务器状态
  • 可导出的指标,与监控解决方案(石墨/普罗米修斯/数据狗)集成
  • 以高性能为导向。更适合处理100k连接或40 GbE接口。

Nginx:

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

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

Nginx是开放核心,许多功能仅在付费版本中可用。值得注意的是,它缺少状态页面和监视指标,这对于操作负载均衡器而言是一个很大的缺点。


42

HAProxy实际上只是一个负载平衡器/反向代理。Nginx是一个Web服务器,也可以用作反向代理。

以下是一些区别:

HAProxy:

  • 是否同时执行TCP和HTTP代理(从1.5-dev12添加的SSL)
  • 更多速率限制选项
  • 作者在这里回答有关服务器故障的问题;-)

Nginx

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

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


11

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

HAProxy是一个更加可调和可管理的负载平衡器(以我的经验)。

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

有关更多信息,请参见此服务器故障问题。 订购nginx /清漆/ haproxy


3
最新(2012年9月)的HAProxy不稳定版本现在支持SSL。(有可能消除了我运行nginx的需要)
Joel K

5

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

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.