PR

リバースプロキシの図解メモ

通常のプロキシサーバ( forward proxy )は、ユーザのリクエストを直接目的のサーバーに送らず、自分のリクエストとして目的のサーバーにリクエストを送り、そのレスポンスをユーザへ送り返す。このとき、サーバーにキャッシュ機能があればプロキシサーバ内にあるキャッシュデータを返却することでネットワークトラフィックを減らすことができる。

また、リクエストを受けた外部サーバでは、プロキシサーバがリクエストを発信したものと見えるため、ユーザは自分を隠蔽することができる。

スポンサードリンク

リバースプロキシは、外部ではなく内部へリクエストを再送する。

ユーザは常に www.mydomain.com (DMZに配置することが多いようだ)のアクセスであり、実態サーバを知ることはない。仮に www.mydomain.com へ攻撃をしてもバックエンドサーバーは無傷である。

例えば /foo は 192.168.1.123 へ、 /bar は backend.mydomain.com へ処理を振り分けることができる。画像など常に一定の情報を返信すればよいだけのものは、並列配置した読み出し専用のサーバーへ振り分けることもできるし、プロキシサーバーにあるキャッシュ機能を使うことができる。

これによって多くのアクセスがあったとしても本当に計算しなければならないリクエスト以外を他のサーバに任せることができるため、負荷を減らすことができる。一般にセキュリティー関連の冗長性向上や、負荷分散のために用いられるようだ。

リバースプロキシにロードバランサーの機能をもたせることもできるし、外部からはHTTPS通信で内部はHTTP通信にすることもできる。ソフトウェアとしては Squid や Pound などを調べると良いらしい。Pound の方が高機能というか、本来そういう用途のものらしい。

先日 BlueOnyx の記事を読んでいたときにリバースプロキシを設定したともあったので、BlueOnyx でもそういう機能が設定可能なのだろうか。標準機能かどうかは不明だが。

1つのIPアドレスでも、複数のサーバーを配置できることがIPアドレスの活用やフォールトトレラントのようで魅力的に見える。比較の対象ではないと思うが、ApacheのVirtualDomainと似ているものの、サーバーを別に配置できる点は大きい。サブドメインの乱立ではないのに複雑な構成のサイトが不思議だったが、なるほどこういうことなのかと思った。

※勉強中のため間違った情報の可能性がある
※一般的にレンタルサーバーではリバースプロキシを利用して各ユーザのドメイン等を設定しているらしい
※一般的にレンタルサーバーではリバースプロキシを利用することはできないらしいが、参考文献によればmod_rewriteを利用してそれっぽい使い方ができるという解説があった

メモ

参考文献

コメント

  1. “http://t.co/eF01BLd8 » リバースプロキシの図解メモ” http://t.co/S5pgqWVu

  2. より:

    リクエストを受けた外部サーバでは、プロキシサーバがリクエストを発信したものと見えるため、ユーザは自分を隠蔽することができる。