そのため、haproxyまたはnginxを実行しているサーバーへのSSLパススルーを備えたELBを用意する予定です。
私は潜在的に何千ものlets-encrypt証明書をホストします。
Nginxまたはhaproxyのどちらが、何千ものssl証明書の処理に優れていますか?それとも、基本的にこの点で違いはありませんか?
私は、haproxyまたはnginxのいずれかで、非常に多くの証明書ファイルなどを使用してSSLを終了したいと考えています。その数の証明書をより適切に処理できるかどうかを考えたいと思います。
Elastic Load Balancerのドキュメント に従って、Classic Load Balancerは、リスナーごとに1つの証明書を許可し、最大100のリスナー(異なるポート上)を使用できます。
アプリケーションロードバランサー 一方、バランサーごとに25の証明書の制限がありますが、同じリスナーですべてを使用できます。
このような膨大な量の証明書に対する唯一の実行可能なアプローチは、EC2インスタンスをネットワークロードバランサーの背後にデプロイすることです。ネットワークロードバランサーは、下位のネットワークレイヤーで機能し、SSLネゴシエーションをバックエンドインスタンスに完全に委任します。
ワークロードがHTTP指向の場合、NginxはHAProxyよりも取引を改善すると思います。他のプロトコルをプロキシする場合は、HAproxyが最適です。
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キー)の場合、それらを数百万個ロードすると、約5GBのメモリが必要になります。
HAProxyはリスナーごとに証明書を割り当てますが、NGINXは「サーバー名」ごとに証明書を割り当てるので、ドメインと同じ数のサーバーブロックが必要になると思います。何千ものそれらを使用している場合は、おそらくこれをスクリプト化する必要があります。
どちらも素晴らしいです。 (私が理解していることから)その観点から複数のバックエンドを実行していないので、私はnginxを個人的に使用します。そのため、その側でhaproxyは必要ありません。
Sslとプロキシパスを使用してnginxをセットアップするだけです:)