Webシステムにしばしば登場する「リバースプロキシ」。Webサーバの負荷分散や統合、セキュリティ対策などに利用されるという。その仕組みや実際の用途、メリットとは? 90秒の解説動画も追加!
リバースプロキシ(Reverse Proxy)とは、クライアントとサーバの通信の間に入って、サーバの応答を「代理(proxy)」しつつ通信を中継する機能、あるいはその役割を担うサーバのこと。Webシステムのセキュリティ対策や性能向上、負荷分散、あるいはシステム構成の自由度向上などのためによく利用される。
リバースプロキシが代理で応答するとはどういうことなのか、下図でもう少し細かく説明しよう。
このように応答の実体はWebサーバなどが生成するものの、クライアントから直接アクセスされるのはリバースプロキシであり、Webサーバの存在は隠匿される。これがリバースプロキシのさまざまなメリットにつながっている(後述)。
ちなみに「リバース(Reverse)」の付かない「プロキシ」は、クライアントからのリクエストを代理して、クライアントを隠ぺいしつつWebサーバなどと通信するサーバを指す。企業内に設置され、認証されたクライアントだけにインターネットへのアクセスを許可するのによく用いられる。
上図のリバースプロキシは単純化しているが、実際のリバースプロキシには複数の機能が実装されており、もっと複雑だ。以下では用途ごとに分類してリバースプロキシの各機能と効果(メリット)を説明する。
クライアントから大量のアクセスが想定される場合、同じ処理をするWebサーバ/アプリを複数用意しておき、リバースプロキシによってリクエストを分散させる。クライアントからは単一サーバ構成と変わらないように維持しつつ、大量のアクセスをさばけるシステムを構築できる。
リバースプロキシでデータのキャッシングや圧縮をすることで、Webサーバ/アプリに大幅な変更を加えることなく、高速化やスループット向上が期待できる。
上図はURLに含まれるパスに応じて、別々のWebサーバ/アプリが応答するシステムの例だ。Webサーバ/アプリそのものを統合することなく、それぞれ単体のまま、クライアントからは単一サーバ(単一サイト)のように見せかけることができる。
上図は社内ネットワークなどに設置したWebサーバ/アプリをインターネットから参照する場合の例だ。DMZに設置したリバースプロキシを経由しているため、(重要なデータを扱っている)Webサーバ/アプリは直接インターネットに接する必要がない。さらに、リバースプロキシ上でWebアプリケーションファイアウォールなどのセキュリティ対策をすれば、Webサーバ/アプリに直接手を加えることなく安全性を高められる。
上図の構成の場合、クライアントとリバースプロキシ間の通信路はSSL(TLS)で暗号化される。一方、リバースプロキシは通信内容を復号して、Webサーバ/アプリと暗号化せずに通信する(ただし第三者に通信が傍受されたり改ざんされたりしないという前提が必要)。Webサーバ/アプリをそれぞれHTTPSに対応させることなく、インターネット上の通信路を暗号化することが可能だ。
オープンソースソフトウェアで特に有名なものとして、「Apache」と「nginx」が挙げられる。本来これらはWebサーバソフトウェアなのだが、リバースプロキシの機能も備えている。
また、HTTPアクセラレータとしては「Varnish HTTP Cache」がよく知られている。
Windows Server+IISでは、マイクロソフト提供の「Application Request Routing(ARR)」というモジュールがリバースプロキシとして利用できる。これをIISに組み込むと、バックエンドにある複数のサーバを束ねた「サーバファーム」を構築できる。
■更新履歴
【2016/12/08】90秒の解説動画を追加しました。
【2016/08/25】初版公開。
Copyright© Digital Advantage Corp. All Rights Reserved.