web-dev-qa-db-ja.com

NginxはHAProxyの前にあるべきですか、それとも反対ですか?

私は、Webサイトのインフラストラクチャアーキテクチャデザインの経験がほとんどありません。私はそれが状況固有であるかもしれないことを知っています。 Webサイトは次のように想定されています。

1)一部のページ(ログインページなど)に対してHTTPSサポートが必要ですが、他のページは単なるHTTPページです。

2)負荷分散が必要になるように、複数のWebサーバーが必要です。

3)パフォーマンスを向上させるには、HTTPキャッシュと圧縮が必要です。

4)一部のリクエスト(画像のアップロードなど)は、専用のバックエンドサーバーにルーティングする必要があります。したがって、URLベースのバランシングが必要です。

NginXとHAProxyはどちらも、Niceオープンソースのリバースプロキシまたはロードバランサ、あるいはその両方であることを知っています。 HAProxyはSSLをサポートしていないため、Nginxの負荷分散はHAProxyほどよくありません。両方取ります。

では、Nginx(リバースプロキシとして)をHAProxy(ロードバランサーとして)の前に置くべきでしょうか、それとも反対にするべきでしょうか?

ありがとう

11
Morgan Cheng

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ログに含まれます;)

7
user82810

haproxy 2014年にリリースされたv。1.5以降 は、SNIを含む魅力のようなSSLをサポートしています。

したがって、私はnginxの前にhaproxyを置きます。

2
Greg Dubicki