はじめに
プロキシとリバースプロキシの違いについてわからなくなる人は多いと思います。(私もそうでした...)
この記事では、備忘録も兼ねてプロキシとリバースプロキシの違いをまとめてみました。
プロキシとは
プロキシを使わない場合、次のようにしてクライアントはWebページにアクセスします。
①クライアントがWebサーバーにHTTPリクエストをする。
②WebサーバーはクライアントからHTTPリクエストを受け取る。
③WebサーバーはHTTPリクエストに対応するWebページをクライアントに返却する。
④クライアントはHTTPレスポンスを受け取る。
しかし、クライアントのIPアドレスがWebサーバーの管理者に伝わってしまうため、悪用されてしまう可能性があります。また、よく閲覧するサイトであっても都度Webサーバーにアクセスすることになり、Webページへのアクセスが高速化できません。
そこでクライアント側に設置するのがプロキシです。
プロキシを使う場合は以下の手順を経ることになります。
①クライアントがプロキシサーバーにHTTPリクエストをする。
②プロキシサーバーがHTTPリクエストを受け取る。
③プロキシサーバーがクライアントの代わりにwebサーバーにHTTPリクエストをする。
④WebサーバーはプロキシサーバーからHTTPリクエストを受け取る。
⑤WebサーバーはHTTPリクエストに対応するWebページをプロキシサーバーに返却する。
⑥プロキシサーバーはWebサーバーから受け取ったHTTPレスポンスをクライアントに転送する。
⑦クライアントはHTTPレスポンスを受け取る。
図を見ていただければわかると思うのですが、プロキシサーバーを中継しているんですね。
プロキシサーバーがクライアントに代わってHTTPリクエストとしてくれます。
これによって次のようなメリットが得られます。
①クライアント←→Webサーバーとの通信とプロキシサーバー←→Webサーバー間でセッションを分離できるため、WebサーバーにクライアントのIPアドレスを知られずに済む。
②プロキシサーバーに過去に訪れたサイトや頻繁に訪れるサイトのキャッシュができるため、クライアントへのレスポンスが高速化できる。
③プロキシサーバーでクライアントの認証をすることで、Webサーバーにアクセスできるクライアントを制限できる。
④プロキシサーバー上にアクセスログを残せるため、サイバー攻撃を受けた際に不正アクセスの原因を特定しやすくなる。
リバーシプロキシとは
記事名には単にプロキシと書きましたが、リバースプロキシと対応するのはフォワードプロキシです。リバースは逆という意味ですから、プロキシの逆の機能を果たすのがリバースプロキシです。
プロキシでは、クライアントとプロキシがプライベート空間にあり、そこからインターネットを介してWebサーバーへリクエストを送信するという流れでした。
リバースプロキシでは、Webサーバー側にリバースプロキシサーバーを設置します。
通信の流れ自体はフォワードプロキシと一緒なのですが、クライアントはWebサーバーの存在を知りません。(Webサーバーはプライベート空間の中にあるため)
この特徴により、リバースプロキシには次のようなメリットがあります。
①複数のWebサーバーに負荷分散できる。
②不正アクセスからWebサーバーを保護できる。
③リバースプロキシにキャッシュすることで、Webサーバーの負荷を低減できる。
④クライアント←→リバースプロキシ間をHTTPS通信とし、リバースプロキシ←→Webサーバー間をHTTP通信とすることでセキュリティを確保するとともに通信を高速化できる。
参考サイト
リバースプロキシとプロキシの違いとは?それぞれのサーバーの仕組みは?
プロキシとは?仕組みや4つの種類、利用するメリット・注意点などを解説


