LoginSignup
178
125

More than 3 years have passed since last update.

プロキシとリバースプロキシの違いまとめ

Last updated at Posted at 2019-07-01

はじめに

プロキシリバースプロキシってややこしいですよね。
この記事では、概念図を交えながら混乱しやすいプロキシとリバースプロキシの違いをまとめていきます。

プロキシとは

一般的に使われるプロキシといえば、「forward proxy」のことをさします。
forward proxyとは、ある別のWebサイトへのリクエストを受け取り、クライアントの代わりにWebサイトへリクエストを送信するサーバのことです。

こちらの図がforward proxyの概念図です。
クライアントXがとあるWebサイト(サーバZ)にアクセスする時にプロキシサーバYを利用している例です。
image.png

リクエストは クライアントX → プロキシY → WebサーバZ という流れで伝わっていきます。

プロキシを使う目的

このようなforward proxyを使う目的が、WebサーバZに直接アクセスできないクライアントXからZにリクエストを送信できるようにすることです。例としては、

  • クライアントがWebサイトの権限者からブロックされているとき(IPでブラックリスト)
  • Youtubeへの通信をブロックしている会社からYoutubeにアクセスしたいとき
  • 政府が特定のニュースサイトへの通信を遮断しているとき
  • 大学がHTTP以外のプロトコルを制限しているとき(研究室内のサーバにアクセスするために踏み台としてプロキシを使う)

などが挙げられます。

リバースプロキシとは

続いて、リバースプロキシについてみてみましょう。
image.png

リクエストの流れはプロキシと同様で、 クライアントX → リバースプロキシY → WebサーバZ のように伝わっていきます。しかし、リバースプロキシでは、クライアントXは、WebサーバZの存在を知らないという大きな違いがあります。

クライアントXは、Publicに存在しているリバースプロキシYと通信することで、リクエスト送信とレスポンス受信ができると考えるはずですが、実際はWebサーバZがその処理を行っています。

リバースプロキシを使う目的

リバースプロキシを使うと、クライアントとWebサーバの間にワンクッションが入ることで、様々な恩恵が得られます。
例えば、

  • 機密上の理由などでWebサーバをPublicにしたくないとき
  • Webサーバをダウンせずに何かしらのPublicな通信を遮断したいとき(リバースプロキシだけダウンさせれば良い)
  • 巨大なサイトを扱う場合(一つのWebサーバではトラフィックをさばけない。リバースプロキシの先に多数のWebサーバを用意することで、クライアントに近いサーバを選択的に使用できる)

などが挙げられます。

プロキシとリバースプロキシの違いまとめ

クライアントX → Y → サーバZ という流れがあるとき

  • Y = プロキシ :クライアントXはサーバZの存在を知っている
  • Y = リバースプロキシ :クライアントXはサーバZの存在を知らない

実践編ーDockerを使ってnginxでリバースプロキシを立ててみるも書いています。

178
125
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
178
125