リバース プロキシとは何ですか? どのように機能しますか?

公開: 2022-08-09
世界地図上に接続されたサーバー。
ArtemisDiana/Shutterstock.com

リバース プロキシは、システム管理者のツールキットに含まれる便利なツールです。 負荷分散、DDOS 攻撃からの保護など、多くの用途があります。

リバース プロキシとは

フォワード プロキシと呼ばれる通常のプロキシは、ユーザーの接続がルーティングされるサーバーです。 多くの点で、インターネット接続の前にあるシンプルな VPN のようなものです. VPN はこれらの一般的な例ですが、特定のコンテンツへのアクセスをブロックする学校のファイアウォールなども含まれます。

リバース プロキシの動作は少し異なります。 システム管理者が使用するバックエンド ツールです。 コンテンツを提供する Web サイトに直接接続する代わりに、NGINX のようなリバース プロキシを中間に置くことができます。 ユーザーからリクエストを受信すると、そのリクエストを最終サーバーに転送または「プロキシ」します。 このサーバーは、実際にリクエストに応答するサーバーであるため、「オリジン サーバー」と呼ばれます。

ユーザーは、VPN やファイアウォールなどのフォワード プロキシ経由でルーティングされているかどうかをおそらく認識していますが、リバース プロキシはバックエンド ツールです。 ユーザーが知る限り、ユーザーは Web サイトに接続しているだけです。 リバース プロキシの背後にあるものはすべて隠され、これには多くの利点もあります。

ただし、この効果は逆にも発生します。 オリジン サーバーにはユーザーへの直接接続がなく、リバース プロキシの IP からの一連のリクエストのみが表示されます。 これは問題になる可能性がありますが、NGINX などのほとんどのプロキシ サービスは、 X-Forwarded-Forなどのヘッダーをリクエストに追加します。 これらのヘッダーは、オリジン サーバーにクライアントの実際の IP アドレスを通知します。

リバース プロキシは何に使用されますか?

リバース プロキシの概念は非常に単純ですが、予想外の多くのユース ケースで驚くほど便利なツールであることが証明されています。

負荷分散

リバース プロキシの主な利点の 1 つは、その軽量性です。 リクエストを転送するだけなので、特にデータベースを照会する必要がある状況では、大量の処理を行う必要はありません。

HAProxy ロードバランサーをセットアップする方法
関連HAProxy ロードバランサーのセットアップ方法

これは、多くの場合ボトルネックがオリジン サーバーであることを意味しますが、その前にリバース プロキシがあれば、簡単に複数のオリジン サーバーを持つことができます。 たとえば、プロキシは要求の 50% を 1 つのサーバーに送信し、50% を別のサーバーに送信して、Web サイトの容量を 2 倍にすることができます。 HAProxy のようなサービスは、これを適切に処理するように設計されています。

これは非常に一般的な使用例であり、アマゾン ウェブ サービス (AWS) などのほとんどのクラウド プロバイダーは負荷分散をサービスとして提供しているため、自分で設定する手間が省けます。 クラウドの自動化により、トラフィックに応じてオリジン サーバーの数を自動的にスケールアップすることもできます。これは「自動スケーリング」と呼ばれる機能です。

AWS の Elastic Load Balancer のようなロード バランサーは、オリジン サーバーが起動または停止したときに自動的に再構成するように設定できます。これらはすべて内部のリバース プロキシによって可能になります。

関連: AWS の Elastic Load Balancer の使用を開始する方法

キャッシング

リバース プロキシはオリジン サーバーよりもはるかに高速に応答することが多いため、共通のルートでの要求を高速化するために、キャッシュと呼ばれる手法が一般的に使用されます。 キャッシングとは、ページ データがリバース プロキシに保存され、数秒/分ごとに 1 回だけオリジン サーバーから要求される場合です。 これにより、オリジンサーバーの負担が大幅に軽減されます。

たとえば、あなたが今読んでいるこの記事は、記事のコンテンツとメタデータを取得するために SQL データベースと通信する必要がある WordPress によって提供されました。 ページが実際には変更されないことを考えると、ページを更新するたびにこれを行うのは無駄です。 そのため、このルートはキャッシュすることができ、リバース プロキシは、WordPress を再び煩わすことなく、最後の応答を次のユーザーに送り返すだけです。

コンテンツをキャッシュするリバース プロキシの専用ネットワークは、コンテンツ配信ネットワーク (CDN) と呼ばれます。 CloudFlare や Fastly などの CDN は、大規模な Web サイトでグローバル配信を高速化するために非常に一般的に使用されています。 コンテンツをキャッシュする世界中のサーバーは「エッジ ノード」と呼ばれ、それらを多数持つことで、Web サイトを非常に高速にすることができます。

ネットワーク保護とプライバシー

ユーザーはリバース プロキシの背後にあるものを知らないため、オリジン サーバーを簡単に直接攻撃することはできません。 実際、リバース プロキシはプライベート サブネット内のオリジン サーバーで一般的に使用されます。つまり、外部インターネットへの受信接続がまったくありません。

これにより、ネットワーク構成がプライベートに保たれます。あいまいさによるセキュリティは絶対確実ではありませんが、攻撃にさらされたままにしておくよりはましです。

この固有の信頼は、ネットワークを計画するときにも役立ちます。 たとえば、データベースと通信する API サーバーはリバース プロキシに似ています。 データベースは、プライベート サブネット内の API サーバーを信頼できることを認識しており、API サーバーはデータベースのファイアウォールとして機能し、適切な接続のみを許可します。

構成可能なフロントエンド

NGINX のようなリバース プロキシの利点の 1 つは、高度な設定が可能なことです。 多くの場合、ユーザーがそれらのサービスにアクセスする方法を構成するためだけに、他のサービスの前に置くと便利です。

たとえば、NGINX は特定のルートへのリクエストをレート制限することができます。これにより、悪用者が単一の IP からオリジン サーバーに何千ものリクエストを作成するのを防ぐことができます。 これは DDOS 攻撃を阻止するものではありませんが、あると便利です。

NGINX は、構成可能な「サーバー」ブロックを使用して、複数のドメイン名からトラフィックを転送することもできます。 たとえば、 example.comへのリクエストをオリジン サーバーに送信し、 api.example.comを特別な API サーバーに送信したり、 files.example.comをファイル ストレージに送信したりできます。 各サーバーは、独自の構成とルールを持つことができます。

NGINX は、一元化された HTTPS 証明書やヘッダー構成など、既存のオリジン サーバーに追加機能を追加することもできます。

場合によっては、単にそのサービスからコンテンツを提供するために、別のローカル サービスと同じマシン上に NGINX があると便利な場合があります。 たとえば、ASP.NET Web API は、Kestrel と呼ばれる内部 Web サーバーを使用します。これは、要求への応答は得意ですが、それ以外はあまり得意ではありません。 プライベート ポートで Kestrel を実行し、構成可能なリバース プロキシとして NGINX を使用することは非常に一般的です。

集中ロギング

これは非常に単純ですが、ほとんどのトラフィックが 1 つのサービスを通過するため、ログを簡単に確認できます。 NGINX のアクセス ログには、トラフィックに関する多くの有用な情報が含まれており、Google アナリティクスのようなサービスの機能に勝るものはありませんが、非常に役立つ情報です。

関連:ビジネス用に Elasticsearch 分析および監視パネルをセットアップする方法