私は、Webサイトのインフラストラクチャアーキテクチャデザインの経験がほとんどありません。私はそれが状況固有であるかもしれないことを知っています。 Webサイトは次のように想定されています。
1)一部のページ(ログインページなど)に対してHTTPSサポートが必要ですが、他のページは単なるHTTPページです。
2)負荷分散が必要になるように、複数のWebサーバーが必要です。
3)パフォーマンスを向上させるには、HTTPキャッシュと圧縮が必要です。
4)一部のリクエスト(画像のアップロードなど)は、専用のバックエンドサーバーにルーティングする必要があります。したがって、URLベースのバランシングが必要です。
NginXとHAProxyはどちらも、Niceオープンソースのリバースプロキシまたはロードバランサ、あるいはその両方であることを知っています。 HAProxyはSSLをサポートしていないため、Nginxの負荷分散はHAProxyほどよくありません。両方取ります。
では、Nginx(リバースプロキシとして)をHAProxy(ロードバランサーとして)の前に置くべきでしょうか、それとも反対にするべきでしょうか?
ありがとう
every WebサーバーをHTTPS経由で利用できるようにする場合は、HAProxyの前にNginxをインストールする必要があります。その構成では、NginxはすべてのSSL作業を処理し、復号化されたHTTPトラフィックをHAProxyフロントエンドに直接送信します。HAProxyフロントエンドは、指定されたルールに基づいてWebサーバーへのリクエストを負荷分散します。
wombleで言及されているLVSの使用の考え方は、Webサーバーとサイトにアクセスするクライアント間の接続を保持しないため、やや煩わしくないということです。一方、LVSは単純な負荷分散のみを提供し、ファイル拡張子、要求されたURL、ヘッダーなどに基づいて要求を転送することはできません。そのため、HAProxyは多くの状況で使用されます。
1つのサーバーでSSLのみが必要な場合(負荷分散されていない場合)、Nginxを使用せずにすべてに対してHAProxyを使用しても安全です。一方、WebサーバーのHTTPSログでクライアントのソースIPアドレスを確認できないという問題があります(HAProxyがそのアドレスを書き換えるため)。ただし、有効にした場合、IPはHAProxyログに含まれます;)
haproxy 2014年にリリースされたv。1.5以降 は、SNIを含む魅力のようなSSLをサポートしています。
したがって、私はnginxの前にhaproxyを置きます。