带有 SSL 的 ELB 可传递至 nginx 或 haproxy。哪个更适合处理更多证书?

带有 SSL 的 ELB 可传递至 nginx 或 haproxy。哪个更适合处理更多证书?

因此,我计划让 ELB 通过 SSL 直通运行 haproxy 或 nginx 的服务器。

我将托管数千个 lets-encrypt 证书。

nginx 和 haproxy 哪个更适合处理数千个 SSL 证书?或者说在这方面基本上没有区别?

我想要在 haproxy 或 nginx 上终端 SSL,并且拥有如此多的证书文件等。我想知道哪一个能更好地处理这么多证书。

答案1

根据弹性负载均衡器文档,Classic Load Balancer 允许每个侦听器使用一个证书,最多可容纳 100 个侦听器(在不同的端口上)。

应用程序负载均衡器另一方面,每个平衡器最多有 25 个证书,尽管您可以在同一个监听器中使用全部证书。

我想说,对于如此大量的证书,唯一可行的方法是将您的 EC2 实例部署在网络负载均衡器后面,它在较低的网络层工作并将 SSL 协商完全委托给后端实例。

如果您的工作负载是 HTTP 导向的,我认为 Nginx 会比 HAProxy 更好。如果您打算代理其他协议,HAproxy 是您的最佳选择。

答案2

两者都很棒。我个人会使用 nginx,因为从这个角度来看你不需要运行多个后端(据我所知),所以你不需要 haproxy。

只需使用 ssl 和代理密码设置 nginx 即可:)

答案3

我认为使用 HAProxy 加载数千个证书更容易。您需要做的就是将您的证书放在一个目录中,然后 HAProxy 将加载所有证书crt 指令

因此,SSL 卸载的最小配置是:

listen ssl_offload
   mode http
   bind IP:443 ssl crt <path-to-ssl-directory>
   timeout     client  30s
   timeout     server  30s
   timeout     connect 5s
   server srv1 IP:80 check 

HAProxy 将根据客户端提供的 SNI 主机名使用正确的证书(目前支持的被大多数现代浏览器所接受)。

加载多个 SSL 证书只是内存消耗的问题。HAProxy 需要一个包含所需证书和任何相关私钥的 PEM 文件。因此,如果平均 PEM 文件约为 5K(2048 个 rsa 密钥),则加载数百万个 PEM 文件将花费您大约 5GB 的内存。

现在,虽然 HAProxy 为每个侦听器分配证书,但我认为 NGINX 为每个“服务器名称”分配证书,因此您需要的服务器块数量与您拥有的域数量相同。如果您使用数千个服务器块,则可能需要编写脚本。

相关内容