web-dev-qa-db-ja.com

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

プロキシサーバーとリバースプロキシサーバーの違いは何ですか?

1643
Vicky

単純な定義のペアは、

フォワードプロキシ:要求者(またはサービス利用者)に代わって行動する

リバースプロキシ:サービス/コンテンツ制作者に代わって行動する。

499

私はこの図がとても役に立つことがわかりました。インターネット上でクライアントからサーバーへのforwardreverseプロキシ設定のアーキテクチャを示しているだけです。この画像はqyb2zm302の post や他の投稿をよりよく理解するのに役立ちます。

Forward Proxy vs Reverse Proxy

Peter SilvaによるF5DevCentralから this ビデオを見ることもできます。

画像ソース: Quora 。この図を作成した人の全クレジット。

それは私に古典的なことわざを思い出させました:

絵は1000語の価値があります。

335
Nishant

qyb2zm302の回答ではプロキシのアプリケーションについて詳しく説明していますが、フォワードプロキシとリバースプロキシの間の基本概念については触れていません。リバースプロキシX - > Y - > Zの場合、XはZについてではなくYについて知っています。逆の場合はそうではありません。

http://www.jscape.com/blog/bid/87783/Forward-Proxy-vs-Reverse-Proxy は、フォワードプロキシとリバースプロキシの違いを非常に明確に説明しています。

プロキシは単に通信の仲介者です(要求+応答)。クライアント<->プロキシ<->サーバー

  • クライアントプロキシ:Client <-> Proxy<-> Server

    プロキシはクライアントに代わって動作します。クライアントはチェーンに関与している3台すべてのマシンについて知っています。サーバーは違います。

  • サーバープロキシ:クライアント<->Proxy <-> Server

    プロキシはサーバーに代わって機能します。クライアントはプロキシについてしか知りません。サーバーはチェーン全体を認識しています。

forwardreverseは、クライアントサーバープロキシを混乱させる、見通しに依存した名前であると私には思えます。私は前者を後者のために、明示的なコミュニケーションのために放棄することを提案します。

もちろん、問題をさらに複雑にするために、すべてのマシンが排他的にクライアントまたはサーバーであるとは限りません。コンテキストにあいまいさがある場合は、プロキシがどこにあるのか、およびトンネリングする通信を明示的に指定するのが最善です。

205
Protongun

いくつかの図表は助けるかもしれません:

フォワードプロキシ

Forward proxy

リバースプロキシ

Reverse proxy

125

違いは主に展開にあります。 Webフォワードプロキシとリバースプロキシはすべて同じ基本機能を備えており、通常はOriginまたは連絡先サーバーにアクセスすることで、さまざまな形式のHTTP要求の要求を受け入れ、応答を提供します。

通常、フル機能のサーバーには、アクセス制御、キャッシュ、およびいくつかのリンクマッピング機能があります。

フォワードプロキシは、クライアントマシンを構成することによりアクセスされるプロキシです。クライアントには、プロキシ機能(リダイレクト、プロキシ認証など)のプロトコルサポートが必要です。プロキシはユーザーエクスペリエンスに対して透過的ですが、アプリケーションに対しては透過的ではありません。

リバースプロキシは、Webサーバーとして展開され、Webサーバーのように動作するプロキシです。ただし、プログラムとディスクからコンテンツをローカルで作成する代わりに、リクエストをOriginサーバーに転送します。クライアントの観点からはIS Webサーバーなので、ユーザーエクスペリエンスは完全に透過的です。

実際、単一のプロキシインスタンスは、異なるクライアント集団に対して同時にフォワードプロキシとリバースプロキシとして実行できます。

これは短いバージョンです。人々がコメントしたいかどうかを明確にすることができます。

70
benc

プロキシ:クライアントに代わって要求を出しています 。そのため、サーバーは応答をプロキシに返し、プロキシはその応答をクライアントに転送します。実際、サーバーはクライアントが誰であるか(クライアントのIPアドレス)を「知る」ことは決してなく、プロキシーだけを知っています。ただし、クライアントは、サーバー宛のHTTPリクエストをフォーマットするため、サーバーを確実に認識していますが、プロキシに渡します。

enter image description here

リバースプロキシ:サーバーに代わって要求を受信して​​います 。要求をサーバーに転送し、応答を受信して​​から応答をクライアントに返します。この場合、クライアントは実際のサーバー(サーバーのIP)を誰かが「知る」ことは決してありません(いくつかの例外はありますが)、それはプロキシを知るだけです。リバースプロキシの設定に応じて、サーバーは実際のクライアントを認識するかどうかわかりません。

enter image description here

55
Dimos

最良の説明 ここ 図付き:

順方向プロキシがクライアントに代わってプロキシしている間または要求側ホスト逆プロキシサーバーに代わるプロキシ

実際には、順方向プロキシはクライアントのIDを隠しますが、逆方向プロキシはサーバーのIDを隠します。

39
Farhan

プロキシサーバーは、インターネット上の、必ずしも関係のないさまざまなパブリックリソースへの発信ネットワーク要求をプロキシ(およびオプションでキャッシュ)します。リバースプロキシは、インターネットからの着信要求をキャプチャ(およびオプションでキャッシュ)して、通常は高可用性の目的でさまざまな内部プライベートリソースに配布します。

プロキシ(転送プロキシ): あなたのLAN上のコンピュータがインターネットにアクセスするプロキシサーバーに接続するとき。インターネットに公開されているのはサーバーだけです。外の人は直接コンピュータにアクセスすることはできません。フォワードプロキシはダウンロードをキャッシュすることでユーザーのインターネットアクセスを向上させることができます。特定のサイトへのアクセスを制限するためにも使用できます。また、プロキシサーバーだけがパブリックアドレスを必要とし、それに接続しているクライアントは必要ありません。

リバースプロキシ: リバースプロキシはフォワードプロキシの逆です。代わりに、接続先のサーバーの代わりにプロキシとして機能します。リモートサーバーに直接アクセスする代わりに、ユーザーはリバースプロキシを経由してそこから適切なサーバーに誘導されます。リバースプロキシだけがSSL証明書を必要とし、パブリックIPアドレスは1つだけ必要となり、着信要求の負荷分散を処理して全体的なユーザーエクスペリエンスを向上させることができます。

enter image description here 画像のソース: docs.Microsoft.com

25
JSON C11

通常のforward proxyは、クライアントとOriginサーバーの間にある中間サーバーです。 Originサーバーからコンテンツを取得するために、クライアントはリクエストをOriginサーバーをターゲットとしてプロキシに送信し、プロキシはOriginサーバーからコンテンツをリクエストしてクライアントに返します。 クライアントは、フォワードプロキシを使用して他のサイトにアクセスするように特別に構成する必要があります。

リバースプロキシ(またはゲートウェイ)は、対照的に、通常のWebのようにクライアントに表示されますサーバ。クライアントで特別な構成は必要ありません。クライアントは、リバースプロキシの名前空間のコンテンツに対して通常の要求を行います。次に、リバースプロキシはそれらの要求をどこに送信するかを決定し、それ自体がオリジンであるかのようにコンテンツを返します。

リバースプロキシの一般的な使用方法は、ファイアウォールの背後にあるサーバーへのインターネットユーザーアクセスを提供することです。リバースプロキシを使用して、負荷を分散することもできます。複数のバックエンドサーバー、または低速なバックエンドサーバーのキャッシュを提供します。さらに、リバースプロキシを使用して、複数のサーバーを同じURLスペースに簡単に入れることができます。

詳細情報をご覧ください: Apache Docs

24
ironman_ma

Cloudflareには、これを詳細に説明した画像を含む素晴らしい記事があります。

ここでチェックしてください: https://www.cloudflare.com/learning/cdn/glossary/reverse-proxy/

enter image description here


enter image description here

22
Nakamoto

これは順方向と逆方向のプロキシの違いを理解するのに最適な読み物です http://www.jscape.com/blog/bid/87783/Forward-Proxy-vs-Reverse-Proxy

フォワードプロキシはクライアント(ユーザ)の身元を隠しますが、リバースプロキシはサーバの身元を隠します。

19
Bonnie Varghese

私の理解に従って..........

はじめに、誰もが代理人として知っているように、「他人を代表する権限」を意味します。今すぐ転送と逆プロキシの2つのことがあります。

フォワードプロキシ "google"と "google"に順番にアクセスしたい場合、その特定の要求に応えるためにn台のサーバーがあるとします。

この場合、Googleから何かを要求していて、Googleに自分のIPアドレスを見せたくない場合は、次に説明するようにフォワードプロキシを使用します。

A -----> B -----> C

ここであなたはAがBを通してリクエストを送信しているので、CはリクエストがAではなくBから来ていると考えるでしょう。このようにしてあなたのクライアントIPが外界にさらされないように防ぐことができます。

リバースプロキシ。今この場合、あなたが理解するように私達はフォワードプロキシの同じケースを取ります。ここでは、Googleに何かを要求しました。その結果、1つの要求をアプリケーションサーバーまたは別のプロキシサーバーに送信して応答を取得します。それで、これらのことは以下で説明されるように起こるでしょう。

A -----> B -----> C

          C------>D

          C<------D

A <----- B <----- C上の図から、AからではなくBからCに要求が送信されたことがわかります。Cからは、Dに1つの要求が送信されます。応答はDからCに行き、次にBとAに行きます。

上の図は、両方のプロキシが同じように動作しているがクライアント側のプロキシがクライアント情報を隠しているのに対し、サーバ側のプロキシはサーバ側の情報を隠しているが、重要な唯一のコンテキストを示している。

上記の説明が間違っていると感じたらコメントしてください。

10
Sourabh Sharma

転送プロキシ クライアントの匿名性を許可します(つまり、Torと考えます)。

リバースプロキシ バックエンドサーバーに匿名性を付与します(つまり、DMZの背後にあるサーバーと見なします)。

10
8bitjunkie

Apacheの観点から私が理解していることですが、Proxyは、サイトxがサイトyのプロキシである場合、xの要求はyを返すということです。

リバースプロキシーとは、yからのすべての参照がxになるように、yからの応答が調整されることを意味します。

ユーザーがプロキシが関与していることを見分けることができないように...

10
Chris Kimpton

リバースプロキシの例(ロードバランサとして)。

クライアントがwebsite.comにアクセスし、ヒットしたサーバーにリバースプロキシが実行されています。リバースプロキシは、 ポンド になることがあります。ポンドは要求を受け取り、その背後にある3つのアプリケーションサーバーのうちの1つに送信します。この例では、Poundはロードバランサーです。すなわち。 3つのアプリケーションサーバー間で負荷を分散します。アプリケーションサーバーは、Webサイトのコンテンツをクライアントに配信します。

9
ae.

プロキシがない場合 to see from client side and server side are the same: Client -> Server proxy from client side: Client -> proxy -> Server from Server side: Client -> Server リバースプロキシ from client side: Client -> Server from Server side: Client -> proxy -> Server

それで私はそれがクライアントユーザによって設定されたなら、それはプロキシと呼ばれたと思います;それがサーバマネージャによって設定されたならそれはリバースプロキシです。

設定の目的と理由は異なるため、データをさまざまな方法で扱い、さまざまなソフトウェアを使用します。

   User side          |      Server side
client  <->  proxy  <-->  reverse_proxy <-> real server
4
tinyhare

フォワードプロキシ serve ユーザー :help ユーザー /にアクセスして サーバー

リバースプロキシ serve サーバー :protect サーバー from ユーザー

4
HoangYell

ユーザーから見て、 proxy または reverse proxy serverにリクエストを送信すると、次のようになります。

  • proxy - 必須 2つの引数

    1)取得するものと2)中間サーバーを使用するプロキシサーバー

  • リバースプロキシ - 必須 引数が1つ

    1。)何を得るべきか

    リバースプロキシは、ユーザーに知らないうちに別のサーバーからコンテンツを取得し、 リバースプロキシサーバーから送信されたように結果を返します

1
pspi

上記の答えの大部分は優れていますが、私の意見では、両者を区別する「逆」品質を十分に説明することに非常に近いとは言えません。そうするためには、本質的に同じもの(プロキシ)の「逆」の性質を視覚化する何らかの方法を与える必要があり、それは抽象化された方法で与える必要があります。

プロキシ(暗黙的に「フォワードプロキシ」)は、複数のローカルクライアントを任意の1つのリモートサーバーに接続します。

c--
   |--p--s
c-- 

リバースプロキシは、複数のローカルサーバーを任意の1つのリモートクライアントに接続します(レイアウトが反転する様子に注意してください)。

s--
   |--p--c
s--

概念を実際にそして正しく理解することは、本質的ではない(特定の概念に対して)詳細を抽象化することを必要としますが、プロキシ操作の語用論に関しては非常に重要かもしれません。このような詳細には、両方のシナリオで複数のクライアントが複数のサーバーに接続すること、インターネットクラウドが存在する場所、クライアントとサーバーの間にどのような可視性が存在するかなどがあります。

1
Alex Fotios

フォワードプロキシの一般的な使用方法は、インターネットを提供することですファイアウォールで制限されている内部クライアントへのアクセス。フォワードプロキシは、キャッシュを使用して(mod_cacheで提供)、ネットワーク使用量を削減することもできます。

0
KouchakYazdi