リバースプロキシ

読み:りばーすぷろきし / 英語表記:reverse proxy

サービスを提供するサーバの代理として外部からの要求を受け付け、処理先へ中継して応答を返すプロキシである。負荷分散やTLSの終端、キャッシュなどの役割も担える。

イマシルちゃんの解説

リバースプロキシは、Webサービスへの要求を代理で受け付けるサーバだよ。
ブラウザから届いた要求を、実際に処理する背後のサーバへ中継するんだ。
戻ってきた応答もリバースプロキシを通してブラウザへ返すから、利用者は奥の機器を意識せずにアクセスできるよ。
たとえば複数の処理先へ要求を振り分ければ、アクセスの集中にも対応しやすくなるんだ。
さらに通信経路を制限すれば、外部から奥の機器へ直接接続させずにサービスを公開できるよ。

より深い解説

定義

リバースプロキシは、外部のクライアントからの要求を、内部のWebサーバなどの代わりに受け付け、適切な内部のサーバに転送し、その応答をクライアントに返すサーバである。クライアントから見ると、リバースプロキシがサーバそのものに見える。通常はDMZに置く。

主な役割

役割内容
内部のサーバの保護内部のサーバのアドレスを外部に見せず、外部からの直接の接続を受けない。ファイアウォールでは、インターネットからはリバースプロキシへの通信だけを許可し、内部のサーバへはリバースプロキシからの通信だけを許可する
負荷分散複数のサーバに要求を振り分ける(ロードバランサの役割)
TLSの終端HTTPSの暗号化・復号をまとめて行い、内部のサーバの負荷を減らす。証明書の管理も一か所で済む
認証内部のサーバに届く前に、利用者を認証する
キャッシュ・圧縮静的なコンテンツを返し、応答を速くする
WAF不正な要求(SQLインジェクションなど)を検査して遮断する

使われ方の例

例内容
社外からの業務サーバの利用テレワーク中のPCが、DMZのリバースプロキシを経由して、社内の業務サーバに接続する。リバースプロキシで利用者を認証する
Webサービスの公開複数のアプリケーションサーバを、1つのドメイン名の後ろにまとめる
CDN世界中に置いた、リバースプロキシのような働きをするキャッシュサーバ

一台のHTTPサーバで、静的な画像やHTMLは自身のファイルから配信し、動的な処理は背後のアプリケーションサーバへ中継する構成もある。後者の中継がリバースプロキシの働きであり、すべてのコンテンツを別サーバから取り寄せる必要はない。

同じ接続先で複数のサイトを扱う

複数のドメイン名を同じリバースプロキシのIPアドレスへ対応付けても、要求されたサイト名に応じて別の内部サーバへ転送できる。HTTP/1.1ではHostヘッダー、HTTP/2では:authorityという疑似ヘッダーフィールドが、要求先のホスト名を示す。

例えばshop.example.netとhelp.example.netを同じアドレスへ向け、前者を販売用サーバ、後者を案内用サーバへ中継する。URLのパスを条件にして転送先を分ける構成もある。これはアプリケーション層の情報に基づく振り分けである。

HTTPSでこれらのフィールドを読むには、通常はリバースプロキシでTLSを終端する。端末との暗号化を終端した後、内部へ平文HTTPで送るか、再びTLSで暗号化するかは別に設計する。TLSのSNIで接続先名を選ぶ処理と、復号後にHTTPの内容で要求を振り分ける処理も区別する。

フォワードプロキシとの比較

フォワードプロキシリバースプロキシ
誰の代理かクライアントの代理サーバの代理
通信の向き内部 → 外部外部 → 内部
端末の設定必要(PACファイルなど)不要(DNSでリバースプロキシのアドレスを引かせる)

同じソフトウェア(nginx、Apache HTTP Server、Squidなど)を、設定によってどちらとしても使えることが多い。フォワードプロキシとして使っていたサーバを、設定を変えてリバースプロキシとして使い直す場合は、ファイアウォールの許可ルールも、通信の向きに合わせて見直す必要がある。

直接接続を防ぐ効果と通信の保護

外部からはリバースプロキシだけに接続させ、背後のWebサーバへは直接到達できないようにすると、公開する接続先と許可する経路を限定できる。ただし、中継があるだけで通信路が暗号化されたり、すべての不正な要求が遮断されたりするわけではない。

盗聴や通信途中の改ざんにはTLSなどを用いる。アプリケーションの脆弱性を突く要求が中継される可能性もあるため、Webサーバ自体の修正や、必要に応じたWAFの検査も併用する。直接接続の防止と、コンテンツの改ざんを全面的に防ぐことは同義ではない。

参考資料

実際の試験ではここに出る!全7問

ネットワークスペシャリスト

午後Ⅰ
午後Ⅱ
午前Ⅱ

この用語が出てくる記事

↑