プロキシとリバースプロキシについてまとめてみました

仕事で使う技術的なこと

すごく初歩的なことですが・・・
いつも「リバースプロキシ」という言葉がピンとこないです。

リバースプロキシって聞くと、個人的には
「プロキシの逆ってことだっけ?あれ?でもだからって何でセキュリティ性とか向上するんだっけ?」
という感じで、プロキシの逆というのにまず引っかかって頭が混乱します。

てことで、改めて自分のためにまとめてみることにしました。

ちなみに、ポンチ絵です。
イメージでかいているので、正確性は保証できないでっす。

プロキシとは

こんな感じ。

太郎さんプロキシサーバー花子さん〇ッ〇なサイトあ、花子さんからのアクセスだ!〇ッ〇なサイトさんこんにちは!私、花子です!実際はアクセス元は太郎だけどね・・・

クライアントの「太郎さん」が、プロキシサーバー「花子さん」を経由して「〇ッ〇なサイト」にアクセスします。
このとき、「〇ッ〇なサイト」からすると花子さんからアクセスが来ているので、背後にいる太郎さんの存在に気付きません。
「〇ッ〇なサイト」はずっと花子さんとのやり取りをしていると思って処理をします。
つまり、太郎さんは身元を隠して「〇ッ〇なサイト」にアクセスできています。いいね!

つまり、プロキシは、クライアントが誰かになりきってサーバーにアクセスすることと言えます。

で、何のメリットがあるのか?

クライアントが位置偽装してサーバーにアクセスできるので、例えば以下のようなシチュエーションで役立ちます。

クライアントが中国に住んでいて、中国からのアクセスを遮断するサーバーAにアクセスしたい
何もしなければサーバーAにはアクセスできない
クライアントは日本にあるプロキシサーバーを経由することで、サーバーAは日本からのアクセスは遮断しないので、アクセスできるようになる

リバースプロキシとは

こんな感じ。

太郎さんリバースプロキシ〇ッ〇なサイトボッタクリなサイトボクは〇ッ〇なサイトにアクセスしてるんだ!実際のアクセス先はボッタクリなサイトなんだけどね・・・こんにちは!〇ッ〇なサイトです!

クライアントの「太郎さん」が、「〇ッ〇なサイト」にアクセスします。
このとき、実は「〇ッ〇なサイト」はハリボテで、実体は「ボッタクリなサイト」です。
太郎さんとしては「〇ッ〇なサイト」にアクセスしていると思っていますが、実は「ボッタクリなサイト」にアクセスしています。怖いですね。

つまり、リバースプロキシは、クライアントがサーバーにアクセスするが、実際に処理しているのは別サーバーと言えます。

ちなみに、↓の記事がすごくわかりやすかったです。

リバースプロキシ(Reverse Proxy)
Webシステムにしばしば登場する「リバースプロキシ」。Webサーバの負荷分散や統合、セキュリティ対策などに利用されるという。その仕組みや実際の用途、メリットとは? 90秒の解説動画も追加!

本ブログよりもこっちのほうが参考になります。

で、何のメリットがあるの?

こっちはメリットたくさんあります。

詳しくは↑のサイトに書いてありますが、例えば以下が挙げられます。

  • サーバーがSSL対応していないとき、リバースプロキシサーバーにSSLを代替させて、疑似的にSSL対応できる
  • サーバーを多重化して運用したいとき、リバースプロキシをクライアントとの間に挟んでリバースプロキシに複数のサーバーのルーティングを制御させることで、クライアント側は多重化を意識しなくてよくなる
なんでリバースプロキシといったら nginx とか Apache とか出てくるの?

これが自分もよくわからなかったのですが、どうやらただ単に nginx や Apache がリバースプロキシの機能を持っているからという理由みたいです。
nginx や Apache はもちろんWebサーバーソフトなんですが、リバースプロキシもできるよと。
だから個人的にはちょっと合ってるのか自信ないのですが、以下のような構成になるんですかね。

nginxリバースプロキシこちらはリバースプロキシとして立てているnginxこちらはWebサーバーのミドルウェアとして立てているnginxWebサーバーnginxWebアプリクライアントhttps://hogehoge.com192.168.0.100192.168.0.1https://hogehoge.comにアクセスしていると思っている

これってちょっとややこしんですけど・・・

コメント

タイトルとURLをコピーしました