通常のプロキシサーバ( 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を利用してそれっぽい使い方ができるという解説があった
メモ
- バックエンド・サーバは X-Forwarded-For ヘッダの情報からクライアントのIPアドレスを得る事が出来るが、mod_rpafを使うと リバースプロキシ経由のリクエストに付与されるリモートホストのアドレスを記録した X-Forwarded-For を Host に上書きしてくれる。
- リバースプロキシ(Pound) 自信はコンテンツを持たない。
- バックエンド側で404 等になった場合、サーバー名を書き換えない(=エラーではなく結果として扱うから?)セキュリティー対策のために、ディレクティブを設定しこの問題を解決しておく。
参考文献
- Apache のリバースプロキシ。 – ROUTE286 – r286.com :
307 Temporary Redirect - “CakePHPでのリーバスプロキシ導入について教えてください” フォーラム – CakePHP Users in Japan :
CakePHP - Build fast, grow solid | PHPフレームワークCakePHP is an open-source web, rapid development framework that makes building web applications simpler, faster and requ... - Apache のリバースプロキシの設定方法 – WebOS Goodies :
Apache のリバースプロキシの設定方法 - WebOS Goodies - Poundを使ってDynamicDNSでも複数台のWebサーバを公開する « kwLog :
Poundを使ってDynamicDNSでも複数台のWebサーバを公開する今のところ自宅サーバはDELLマシン一台ですが今後サーバ台数を増やせるようにしました。 DynamicDNSで自宅サーバを構築する場合にはインターネット側から来るアクセスをポート・フォワーディングやDMZなどのルータの設 - pound リバースプロキシ: ねっとでべろ :
pound リバースプロキシ - ねっとでべろ今日もアルディージャ勝ちましたね!ナビスコカップは2連敗から二連勝で調子に乗って... - [Pound を利用した負荷分散] – Y-110’s Wiki :
http://php.y-110.net/wiki/index.php?%A5%ED%A1%BC%A5%C9%A5%D0%A5%E9%A5%F3%A5%B5%A1%A7Pound - リバースプロキシ & ロードバランサ - Pound :
リバースプロキシ & ロードバランサ − Poundリバースプロキシ & ロードバランサ − Pound の情報 - Poundで作るロードバランサとSSLラッパ(1/4) - @IT :
Poundで作るロードバランサとSSLラッパWebサーバの負荷を軽減する方法として、リバースプロキシによる代行とロードバランサによる分散が考えられる。今回は、これらによる負荷の低減方法について解説する。(編集部)
コメント
“http://t.co/eF01BLd8 » リバースプロキシの図解メモ” http://t.co/S5pgqWVu
リクエストを受けた外部サーバでは、プロキシサーバがリクエストを発信したものと見えるため、ユーザは自分を隠蔽することができる。