リバースプロキシ
表示
リバースプロキシ(英: reverse proxy)または逆プロキシは、特定のサーバへのリクエストが必ず通過するように設置されたプロキシサーバである。一般的なプロキシとは逆で、不特定多数のクライアントのアクセスに備えて特定のサーバー専用に設けられる。クライアントに取ってはサービスの窓口として機能し、普通はクライアントがリバースプロキシを意識することはない。
リバースプロキシは、不特定多数のクライアントに対するアクセス制限や、サーバーの負荷分散のために用意される。具体的には下記の用途がある。
- セキュリティ
- リバースプロキシサーバを前置することで防御が一段階増える。リバースプロキシに認証・認可の機能を持たせる場合もある。複数台のサーバがある場合にリバースプロキシで認証・認可を行うとシングルサインオンを実現できる。
- 暗号化/SSL高速化
- SSL による暗号化でセキュアなWebサイトを作るとき、暗号化をWebサーバ自体が行うのではなく、SSL高速化のためのハードウェアを備えたリバースプロキシサーバで行う。この用途で用いる場合、SSLオフローダとも呼ばれる。
- 負荷分散
- リバースプロキシは負荷を複数のサーバに分散させることができる。Webサーバ群にリバースプロキシを組み合わせる場合、リバースプロキシが各WebページにあるURLを書き換えることもある(外部に公開されているURLを内部の位置に変換する)。
- 変化しないコンテンツのキャッシュ
- リバースプロキシはWebサーバ内の画像などの変化しないコンテンツのキャッシュとして作用し、Webサーバの負荷を低減する。Webサイトアクセスの大部分は参照のみであるため、これによってWebサーバの負荷は大幅に低減される。
- 圧縮
- リバースプロキシはコンテンツを圧縮して最適化し、ロード時間を短縮できる。
- 速度の調整
- Webサーバ上のプログラムがコンテンツを生成している場合、直接クライアントと通信を行うと、クライアント側がダウンロードするのを待たないとプログラムを終了できない。リバースプロキシはWebサーバが生成したコンテンツをまとめてキャッシュし、プログラムはその時点で終了可能となり、クライアントはクライアント側の速度でダウンロードが可能となる。
- 仮想的なサーバ統合
- 複数のサーバがそれぞれ独自のサービスを提供している場合にリバースプロキシを導入して、利用者には1台のサーバとして見せることができる。
関連項目
[編集]- プロキシ
- Squid - リバースプロキシとしても使えるプロキシサーバ
- Apache HTTP Server - リバースプロキシとして使われることもある
- Lighttpd - 負荷分散機能付きのリバースプロキシとして利用可能
- Varnish Cache - オープンソースのリバースプロキシ
- nginx - リバースプロキシ兼Webサーバ
- コンテンツデリバリネットワーク
外部リンク
[編集]- SwitchFlow Reverse Proxy - Linux 用 C++ リバースプロキシ
- Perlbal - Perlベースのリバースプロキシ/ロードバランサー/Webサーバ
- PortFusion - オープンソースのリバースプロキシ
- Pound - 負荷分散のためのリバースプロキシ
- YXORP - ファイアウォール兼リバースプロキシ。GPL