すごく初歩的なことですが・・・
いつも「リバースプロキシ」という言葉がピンとこないです。
リバースプロキシって聞くと、個人的には
「プロキシの逆ってことだっけ?あれ?でもだからって何でセキュリティ性とか向上するんだっけ?」
という感じで、プロキシの逆というのにまず引っかかって頭が混乱します。
てことで、改めて自分のためにまとめてみることにしました。
ちなみに、ポンチ絵です。
イメージでかいているので、正確性は保証できないでっす。
プロキシとは
こんな感じ。
クライアントの「太郎さん」が、プロキシサーバー「花子さん」を経由して「〇ッ〇なサイト」にアクセスします。
このとき、「〇ッ〇なサイト」からすると花子さんからアクセスが来ているので、背後にいる太郎さんの存在に気付きません。
「〇ッ〇なサイト」はずっと花子さんとのやり取りをしていると思って処理をします。
つまり、太郎さんは身元を隠して「〇ッ〇なサイト」にアクセスできています。いいね!
つまり、プロキシは、クライアントが誰かになりきってサーバーにアクセスすることと言えます。
で、何のメリットがあるのか?
クライアントが位置偽装してサーバーにアクセスできるので、例えば以下のようなシチュエーションで役立ちます。
クライアントが中国に住んでいて、中国からのアクセスを遮断するサーバーAにアクセスしたい
何もしなければサーバーAにはアクセスできない
クライアントは日本にあるプロキシサーバーを経由することで、サーバーAは日本からのアクセスは遮断しないので、アクセスできるようになる
リバースプロキシとは
こんな感じ。
クライアントの「太郎さん」が、「〇ッ〇なサイト」にアクセスします。
このとき、実は「〇ッ〇なサイト」はハリボテで、実体は「ボッタクリなサイト」です。
太郎さんとしては「〇ッ〇なサイト」にアクセスしていると思っていますが、実は「ボッタクリなサイト」にアクセスしています。怖いですね。
つまり、リバースプロキシは、クライアントがサーバーにアクセスするが、実際に処理しているのは別サーバーと言えます。
ちなみに、↓の記事がすごくわかりやすかったです。
本ブログよりもこっちのほうが参考になります。
で、何のメリットがあるの?
こっちはメリットたくさんあります。
詳しくは↑のサイトに書いてありますが、例えば以下が挙げられます。
- サーバーがSSL対応していないとき、リバースプロキシサーバーにSSLを代替させて、疑似的にSSL対応できる
- サーバーを多重化して運用したいとき、リバースプロキシをクライアントとの間に挟んでリバースプロキシに複数のサーバーのルーティングを制御させることで、クライアント側は多重化を意識しなくてよくなる
なんでリバースプロキシといったら nginx とか Apache とか出てくるの?
これが自分もよくわからなかったのですが、どうやらただ単に nginx や Apache がリバースプロキシの機能を持っているからという理由みたいです。
nginx や Apache はもちろんWebサーバーソフトなんですが、リバースプロキシもできるよと。
だから個人的にはちょっと合ってるのか自信ないのですが、以下のような構成になるんですかね。
これってちょっとややこしんですけど・・・
コメント