ブログ | NGINX

NGINX Plus を使用したリバース プロキシ

NGINX-F5 水平黒タイプ RGB の一部
リック・ネルソン サムネイル
リック・ネルソン
2014 年 4 月 10 日公開

NGINX は、非常に高性能な Web サーバーとして正当な名声を得ています。 NGINX はリバース プロキシとしても使用できることは多くの人が認識していると思いますが、それがどれほど強力なリバース プロキシであるかを認識していないかもしれません。

リバースプロキシとは何ですか?

まず、少し立ち止まって、「プロキシ サーバーとは何なのか」を考えてみましょう。  Wikipedia には良い定義があると思います:

プロキシ サーバーは、他のサーバーからリソースを求めるクライアントからの要求の仲介役として機能するサーバー (コンピューター システムまたはアプリケーション) です。

したがって、プロキシ サーバーは、クライアントと、クライアントが探しているデータをホストする実際のサーバーの間に配置されます。 クライアントにとっては、プロキシ サーバーは実際のバックエンド サーバーのように見え、バックエンド サーバーにとっては、プロキシ サーバーはクライアントのように見えます。 リバース プロキシ サーバーを定義するには、 Wikipediaに戻ります。

リバースプロキシは、クライアントに代わって 1 つ以上のサーバーからリソースを取得するプロキシサーバーの一種です。

違いは、プロキシ サーバーはクライアントと 1 つのバックエンド サーバーの間に配置されますが、リバース プロキシ サーバーは 1 つ以上のバックエンド サーバーの前に配置され、各要求に対してどのバックエンド サーバーを使用するかを決定することです。

リバースプロキシを使用する利点は何ですか?

リバース プロキシ サーバーを使用する理由は何でしょうか?  次のような多くの利点があります:

  • 同時実行性 – インターネット アプリケーションでは、多くの場合、多数のクライアントがそれぞれ複数の接続を開き、バックエンド サーバーへの接続数が膨大になります。 多くの Web サーバーおよびアプリケーション サーバーは、多数の接続を適切に処理できません (Web サーバーとして使用する場合の NGINX は例外)。そのため、複数の接続をより適切に処理できるリバース プロキシを追加すると、バックエンド サーバーのパフォーマンスが大幅に向上する可能性があります。
  • 回復力 – クライアントがバックエンド サーバーに直接接続していて、そのサーバーで障害が発生した場合、現在サーバーに接続している (または接続しようとしている) すべてのクライアントの要求が失敗します。 リバース プロキシ サーバーは、バックエンド サーバーの健全性を監視し、障害が発生したサーバーがサービスに復帰するまでそのサーバーへの要求の送信を停止します。 リバース プロキシは、まだ動作しているバックエンド サーバーにリクエストを自動的に送信するため、クライアントにはエラーは表示されません。
  • スケーラビリティ – リバース プロキシはバックエンド サーバーのグループの唯一の「公開面」であるため、トラフィック負荷の変化に応じてサーバーを追加したり削除したりできます。
  • レイヤー 7 ルーティング – リバース プロキシは、すべてのサーバーに向かうトラフィックを確認し、各要求をどこに送信するかについてインテリジェントな決定を下し、必要に応じて要求と応答を変更できます。 リクエスト内の特定の HTTP ヘッダー、URL の一部、クライアントの地理的位置などに基づいてルーティングを決定できます。
  • キャッシュ – リバース プロキシはキャッシュを行うのに最適な場所です。通常、すべてのリクエストをバックエンド サーバーに送信し、各バックエンド サーバーに独自のキャッシュを構築させるよりも、コンテンツをそこにキャッシュする方がはるかに効率的です。
  • その他の機能 – リバース プロキシは、バックエンド サーバーの前に配置することで、帯域幅や要求レートに基づいたトラフィック シェーピング、接続制限、さまざまな認証スキームとの統合、アクティビティの監視など、他の機能も実行できます。

NGINX Plus をリバースプロキシとして使用する

NGINX Plus は、NGINX Open Source の定評ある Web サーバー機能にさらに多くの機能を導入し、NGINX Plus を独自のハードウェア アプライアンスに代わるフル機能のアプリケーション配信コントローラー (ADC) にします。

以下は、NGINX Plus で利用できる機能の一部です。

負荷分散

重み付けありと重み付けなしの両方を含む複数の負荷分散アルゴリズムから選択できます。 セッションの永続性もサポートされています。 NGINX Plus は、HTTP、HTTPS、WebSocket、FastCGI、memcached、SCGI、SPDY [NGINX Plus も負荷分散する HTTP/2 によって廃止されました]、および uwsgi を負荷分散できます。 続きを読む

健康診断

バックエンド サーバーの健全性のパッシブ監視とアクティブ監視の両方がサポートされています。 NGINX Plus がノードに接続できない場合、そのノードはダウンとしてマークされます。 アクティブ ヘルス チェックをバックエンド ノードに対して定期的に実行するように構成することもできます。 さらに、スロースタート機能を使用すると、NGINX Plus はオンラインになったばかりのノードへのトラフィックを徐々に増加させ、大量のトラフィックの集中による過負荷を回避することができます。 続きを読む

リクエストルーティング

トラフィックは、クライアント IP アドレス、ホスト名、URI、クエリ文字列、ヘッダーなど、リクエストの任意の部分に基づいてルーティングできます。

リクエストとレスポンスの書き換え

ヘッダー、本文、URI など、リクエストまたはレスポンスの任意の部分を変更できます。NGINX Plus では、ヘッダーを追加および削除することもできます。 続きを読む

キャッシング

応答はキャッシュすることができ、キャッシュするコンテンツの種類と期間を設定できます。 キャッシュからアイテムを消去することもできます。 続きを読む

圧縮

Gzip 圧縮がサポートされており、圧縮するコンテンツと圧縮を使用するタイミングを細かく制御できます。 続きを読む

SSL/TLS 処理

SSL/TLS の復号化と暗号化がサポートされており、さまざまな証明書を使用して多数のドメイン名の復号化を行うことができます。 続きを読む

ライブアクティビティの監視とログ記録

JSON 形式でエンコードされた NGINX Plus 統計は、単純な HTTP リクエストを介して利用できます。 統計情報を表示するためのダッシュボード Web ページが用意されており、カスタムまたはサードパーティの監視ツールに統計情報をフィードすることもできます。カスタム形式のログは、ローカル ログと syslog へのエクスポートの両方に対して構成できます。 続きを読む

その他多数

NGINX には、ビデオ ストリーミングのサポート、メール プロキシのサポート、GeoIP のサポート、ダウンタイムのない正常な再起動とアップグレード、トラフィック シェーピング、接続制限など、他にも多くの機能があります。 詳細については、 nginx.comおよびnginx.orgをご覧ください。


「このブログ投稿には、入手できなくなった製品やサポートされなくなった製品が参照されている場合があります。 利用可能な F5 NGINX 製品およびソリューションに関する最新情報については、 NGINX 製品ファミリーをご覧ください。 NGINX は現在 F5 の一部です。 以前の NGINX.com リンクはすべて、F5.com の同様の NGINX コンテンツにリダイレクトされます。"