プロキシサーバーとリバースプロキシサーバーの違いは何ですか?
単純な定義のペアは、
フォワードプロキシ:要求者(またはサービス利用者)に代わって行動する
リバースプロキシ:サービス/コンテンツ制作者に代わって行動する。
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 )
プロキシはサーバーに代わって機能します。クライアントはプロキシについてしか知りません。サーバーはチェーン全体を認識しています。
forwardとreverseは、クライアントとサーバープロキシを混乱させる、見通しに依存した名前であると私には思えます。私は前者を後者のために、明示的なコミュニケーションのために放棄することを提案します。
もちろん、問題をさらに複雑にするために、すべてのマシンが排他的にクライアントまたはサーバーであるとは限りません。コンテキストにあいまいさがある場合は、プロキシがどこにあるのか、およびトンネリングする通信を明示的に指定するのが最善です。
いくつかの図表は助けるかもしれません:
フォワードプロキシ
リバースプロキシ
違いは主に展開にあります。 Webフォワードプロキシとリバースプロキシはすべて同じ基本機能を備えており、通常はOriginまたは連絡先サーバーにアクセスすることで、さまざまな形式のHTTP要求の要求を受け入れ、応答を提供します。
通常、フル機能のサーバーには、アクセス制御、キャッシュ、およびいくつかのリンクマッピング機能があります。
フォワードプロキシは、クライアントマシンを構成することによりアクセスされるプロキシです。クライアントには、プロキシ機能(リダイレクト、プロキシ認証など)のプロトコルサポートが必要です。プロキシはユーザーエクスペリエンスに対して透過的ですが、アプリケーションに対しては透過的ではありません。
リバースプロキシは、Webサーバーとして展開され、Webサーバーのように動作するプロキシです。ただし、プログラムとディスクからコンテンツをローカルで作成する代わりに、リクエストをOriginサーバーに転送します。クライアントの観点からはIS Webサーバーなので、ユーザーエクスペリエンスは完全に透過的です。
実際、単一のプロキシインスタンスは、異なるクライアント集団に対して同時にフォワードプロキシとリバースプロキシとして実行できます。
これは短いバージョンです。人々がコメントしたいかどうかを明確にすることができます。
プロキシ:クライアントに代わって要求を出しています 。そのため、サーバーは応答をプロキシに返し、プロキシはその応答をクライアントに転送します。実際、サーバーはクライアントが誰であるか(クライアントのIPアドレス)を「知る」ことは決してなく、プロキシーだけを知っています。ただし、クライアントは、サーバー宛のHTTPリクエストをフォーマットするため、サーバーを確実に認識していますが、プロキシに渡します。
リバースプロキシ:サーバーに代わって要求を受信しています 。要求をサーバーに転送し、応答を受信してから応答をクライアントに返します。この場合、クライアントは実際のサーバー(サーバーのIP)を誰かが「知る」ことは決してありません(いくつかの例外はありますが)、それはプロキシを知るだけです。リバースプロキシの設定に応じて、サーバーは実際のクライアントを認識するかどうかわかりません。
最良の説明 ここ 図付き:
順方向プロキシがクライアントに代わってプロキシしている間 ( または要求側ホスト ) 、逆プロキシサーバーに代わるプロキシ
実際には、順方向プロキシはクライアントのIDを隠しますが、逆方向プロキシはサーバーのIDを隠します。
プロキシサーバーは、インターネット上の、必ずしも関係のないさまざまなパブリックリソースへの発信ネットワーク要求をプロキシ(およびオプションでキャッシュ)します。リバースプロキシは、インターネットからの着信要求をキャプチャ(およびオプションでキャッシュ)して、通常は高可用性の目的でさまざまな内部プライベートリソースに配布します。
プロキシ(転送プロキシ): あなたのLAN上のコンピュータがインターネットにアクセスするプロキシサーバーに接続するとき。インターネットに公開されているのはサーバーだけです。外の人は直接コンピュータにアクセスすることはできません。フォワードプロキシはダウンロードをキャッシュすることでユーザーのインターネットアクセスを向上させることができます。特定のサイトへのアクセスを制限するためにも使用できます。また、プロキシサーバーだけがパブリックアドレスを必要とし、それに接続しているクライアントは必要ありません。
リバースプロキシ: リバースプロキシはフォワードプロキシの逆です。代わりに、接続先のサーバーの代わりにプロキシとして機能します。リモートサーバーに直接アクセスする代わりに、ユーザーはリバースプロキシを経由してそこから適切なサーバーに誘導されます。リバースプロキシだけがSSL証明書を必要とし、パブリックIPアドレスは1つだけ必要となり、着信要求の負荷分散を処理して全体的なユーザーエクスペリエンスを向上させることができます。
画像のソース: docs.Microsoft.com
通常のforward proxyは、クライアントとOriginサーバーの間にある中間サーバーです。 Originサーバーからコンテンツを取得するために、クライアントはリクエストをOriginサーバーをターゲットとしてプロキシに送信し、プロキシはOriginサーバーからコンテンツをリクエストしてクライアントに返します。 クライアントは、フォワードプロキシを使用して他のサイトにアクセスするように特別に構成する必要があります。
リバースプロキシ(またはゲートウェイ)は、対照的に、通常のWebのようにクライアントに表示されますサーバ。クライアントで特別な構成は必要ありません。クライアントは、リバースプロキシの名前空間のコンテンツに対して通常の要求を行います。次に、リバースプロキシはそれらの要求をどこに送信するかを決定し、それ自体がオリジンであるかのようにコンテンツを返します。
リバースプロキシの一般的な使用方法は、ファイアウォールの背後にあるサーバーへのインターネットユーザーアクセスを提供することです。リバースプロキシを使用して、負荷を分散することもできます。複数のバックエンドサーバー、または低速なバックエンドサーバーのキャッシュを提供します。さらに、リバースプロキシを使用して、複数のサーバーを同じURLスペースに簡単に入れることができます。
詳細情報をご覧ください: Apache Docs
Cloudflareには、これを詳細に説明した画像を含む素晴らしい記事があります。
ここでチェックしてください: https://www.cloudflare.com/learning/cdn/glossary/reverse-proxy/
これは順方向と逆方向のプロキシの違いを理解するのに最適な読み物です http://www.jscape.com/blog/bid/87783/Forward-Proxy-vs-Reverse-Proxy
フォワードプロキシはクライアント(ユーザ)の身元を隠しますが、リバースプロキシはサーバの身元を隠します。
私の理解に従って..........
はじめに、誰もが代理人として知っているように、「他人を代表する権限」を意味します。今すぐ転送と逆プロキシの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に行きます。
上の図は、両方のプロキシが同じように動作しているがクライアント側のプロキシがクライアント情報を隠しているのに対し、サーバ側のプロキシはサーバ側の情報を隠しているが、重要な唯一のコンテキストを示している。
上記の説明が間違っていると感じたらコメントしてください。
転送プロキシ クライアントの匿名性を許可します(つまり、Torと考えます)。
リバースプロキシ バックエンドサーバーに匿名性を付与します(つまり、DMZの背後にあるサーバーと見なします)。
Apacheの観点から私が理解していることですが、Proxyは、サイトxがサイトyのプロキシである場合、xの要求はyを返すということです。
リバースプロキシーとは、yからのすべての参照がxになるように、yからの応答が調整されることを意味します。
ユーザーがプロキシが関与していることを見分けることができないように...
リバースプロキシの例(ロードバランサとして)。
クライアントがwebsite.comにアクセスし、ヒットしたサーバーにリバースプロキシが実行されています。リバースプロキシは、 ポンド になることがあります。ポンドは要求を受け取り、その背後にある3つのアプリケーションサーバーのうちの1つに送信します。この例では、Poundはロードバランサーです。すなわち。 3つのアプリケーションサーバー間で負荷を分散します。アプリケーションサーバーは、Webサイトのコンテンツをクライアントに配信します。
プロキシがない場合 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
フォワードプロキシ serve ユーザー :help ユーザー /にアクセスして サーバー 。
リバースプロキシ serve サーバー :protect サーバー from ユーザー 。
ユーザーから見て、 proxy または reverse proxy serverにリクエストを送信すると、次のようになります。
proxy - 必須 2つの引数 :
1)取得するものと2)中間サーバーを使用するプロキシサーバー
リバースプロキシ - 必須 引数が1つ :
1。)何を得るべきか
リバースプロキシは、ユーザーに知らないうちに別のサーバーからコンテンツを取得し、 リバースプロキシサーバーから送信されたように結果を返します
上記の答えの大部分は優れていますが、私の意見では、両者を区別する「逆」品質を十分に説明することに非常に近いとは言えません。そうするためには、本質的に同じもの(プロキシ)の「逆」の性質を視覚化する何らかの方法を与える必要があり、それは抽象化された方法で与える必要があります。
プロキシ(暗黙的に「フォワードプロキシ」)は、複数のローカルクライアントを任意の1つのリモートサーバーに接続します。
c--
|--p--s
c--
リバースプロキシは、複数のローカルサーバーを任意の1つのリモートクライアントに接続します(レイアウトが反転する様子に注意してください)。
s--
|--p--c
s--
概念を実際にそして正しく理解することは、本質的ではない(特定の概念に対して)詳細を抽象化することを必要としますが、プロキシ操作の語用論に関しては非常に重要かもしれません。このような詳細には、両方のシナリオで複数のクライアントが複数のサーバーに接続すること、インターネットクラウドが存在する場所、クライアントとサーバーの間にどのような可視性が存在するかなどがあります。
フォワードプロキシの一般的な使用方法は、インターネットを提供することですファイアウォールで制限されている内部クライアントへのアクセス。フォワードプロキシは、キャッシュを使用して(mod_cache
で提供)、ネットワーク使用量を削減することもできます。