リバースプロキシの図解メモ
投稿者: admin, カテゴリ: サーバー/OS, tags: Apache, BlueOnyx, CakePHP, DNS, Linux, Xen, サーバー, ハック, 仮想化, 危機管理投稿日: 2010.05.03 - 16:51
更新日: 2011.04.11 - 00:30
通常のプロキシサーバ( 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 :
http://r286.com/arc/377
- “CakePHPでのリーバスプロキシ導入について教えてください” フォーラム – CakePHP Users in Japan :
http://cakephp.jp/modules/newbb/viewtopic.php?topic_id=1588&forum=3 - Apache のリバースプロキシの設定方法 – WebOS Goodies :
http://webos-goodies.jp/archives/51261261.html - Poundを使ってDynamicDNSでも複数台のWebサーバを公開する « kwLog :
http://blog.makotokw.com/2008/01/06/pounddynamicdnsweb/ - pound リバースプロキシ: ねっとでべろ :
http://yk.tea-nifty.com/netdev/2006/05/pound__9562.html - [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 :
http://sy2920.s151.xrea.com/web/pound.html - Poundで作るロードバランサとSSLラッパ(1/4) - @IT :
http://www.atmarkit.co.jp/flinux/rensai/apache2_05/apache05a.html
関連記事
- [BlueOnyx] yum update とエラー対処
- 環境変数(PHP5)
- Sony XDCAMProxyViewer のインストール(図解)
- OpenIDプロバイダになる
- [CakePHP] QueryStringを取得する
- pandora.tv 動画ダウンロード(図解)
- JavaScriptで外部サイトアクセス不能を回避する
スポンサードリンク


エントリ (RSS)