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


11

私は、ウェブサイトのインフラストラクチャーアーキテクチャー設計の経験がほとんどありません。私はそれが特定の状況であるかもしれないことを知っています。Webサイトは次のことになっています。

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

2)複数のWebサーバーが必要であるため、負荷分散が必要です。

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

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

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

Nginx(リバースプロキシとして)をHAProxyの前に(ロードバランサーとして)または反対に配置する必要がありますか?

ありがとう

回答:


7

あなたが持って計画している場合は、すべて HTTPS経由で利用できるWebサーバーを、あなたはHAProxyの前にnginxのをインストールする必要があります。この構成では、NginxがすべてのSSL作業を処理し、復号化されたHTTPトラフィックを直接HAProxyフロントエンドに送信します。その後、指定したルールに基づいてWebサーバーへのリクエストの負荷が分散されます。

wombleが述べているように、LVSを使用するという考え方は、Webサーバーとサイトにアクセスするクライアントとの間の接続を保持しないため、やや邪魔にならないということです。一方、LVSは単純な負荷分散のみを提供し、ファイル拡張子、要求されたURL、ヘッダーなどに基づいて要求を転送することはできません。それがHAProxyが多くの状況で使用される理由です。

1つのサーバー(負荷分散されていない)でSSLのみが必要な場合は、Nginxを使用せずにすべてにHAProxyを使用しても安全です。一方、WebサーバーのHTTPSログにクライアントのソースIPアドレスが表示されないという問題が1つ発生します(HAProxyがそのアドレスを書き換えるため)。IPは有効にするとHAProxyログに記録されます;)


ありがとう。「一部のリクエスト(画像のアップロードなど)は専用のバックエンドサーバーにルーティングする必要があるため、URLベースのバランスが必要です。」(質問を更新したように)。LVSは私の要件を満たしていない可能性があります。
モーガンチェン

ところで、HAProxyによるIPアドレスの非表示は、HTTPSだけのためですか、それともHTTPのためですか?
モーガンチェン

@ Morgan、IPの非表示はHTTPS専用です。

TCPモードのバックエンド専用であるため、HTTPヘッダー(X-Forwarded-For)として送信されるため、HTTP以外のIPアドレスは表示されません。

ではない正確に。HaproxyはクライアントのIPアドレスを使用してサーバーに接続できますが、これにはカーネルの協力が必要です(例:TPROXY機能)。ただし、これは可能な限り回避する必要があります。
ウィリータロー


1

nginxを使用するだけで、フロントエンドWebサーバーとして必要なすべてを実行できます。フロントエンドのロードバランシングが必要な場合は、Linux Virtual ServerなどのL3ロードバランサーを使用します。HAproxyのように邪魔にならないためです。バックエンドワーカーのプールへのリクエストのバランシングなど、舞台裏のロードバランシングを行う必要がある場合は、HAproxyを使用します。


2
NginXの負荷分散は単純で、ラウンドロビン方式であると言われています。それが、HAProxyを考慮に入れている理由です。
モーガンチェン

1
正しく言われています。自分で言いました。そのため、nginxをロードバランサーとして使用することはお勧めしません。また、この(または他の)私の回答では、nginxをロードバランサーとして使用することについて言及していません。
ワンブル

これは、ソース(またはFreeBSDのポート)から独自のコンパイルを使用することを恐れている場合のみです。負荷分散を改善する複数のサードパーティモジュールがあります:wiki.nginx.org/3rdPartyModules
Martin Fjordvald

2
はい、改善します。十分にします これに関する私の考えは、hezmatt.org /〜mpalmer / blog / 2011/07/24 /…(「not pretty」で検索)にあります。
ウォンブル
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.