フォワードプロキシとリバースプロキシの違いを明確に説明した記事
フォワードプロキシとは何ですか? リバースプロキシとは何ですか? 違いは何ですか? この記事を読めば明らかになるでしょう…
まず、代理とは文字通り、一方の当事者に代わって処理すること、つまり一方が他方に物事を委託することを指しますが、コンピュータネットワークの世界では通常、代理とはクライアントとサーバーの間の仲介者を指します。
コンピュータ ネットワークのプロキシは、フォワード プロキシとリバース プロキシに分けられます。フォワード プロキシは非常に単純です。つまり、クライアントはサーバーに直接アクセスせず、仲介者を介してアクセスします (仲介者は、最初にクライアントに代わってサーバーからデータを取得します)。クライアントは、取得したデータをクライアントに返します)、これは簡単に理解できますよね? 多くの人は、なぜクライアントがサーバーに直接アクセスせずに「パンツを脱いでオナラする」のか疑問に思うでしょう。通常、次の 2 つの理由が考えられます。
1. 何らかの理由により、クライアントが配置されているネットワークではサーバーへのアクセスが制限されています。
2. いくつかの特別な理由により、サーバーは特定のソースからのクライアントのアクセスを許可していません。
たとえば、村 A と村 B の関係が悪いため、村 A が制限を設けて、村人 A が村 B の売店でトウモロコシを購入できないようにしたり、村 B の売店が村人 A にトウモロコシを販売しなかったりします。しかし、村人 A は村 B の売店からトウモロコシが欲しいので、どうすればよいでしょうか? 村人Aは、C村の人たちに自分の代わりにB村に物を買いに行き、それを持ち帰ってから渡すことができる、これが転送エージェントです。概略図は次のとおりです。
この構造の特徴は、サーバーは本当の顧客が誰であるかを知りません。サーバーが連絡する顧客はエージェントですが、顧客は実際にサービスを提供しているのが誰であるかを知っています (エージェントではなく B 売店です)。エージェントはクライアントです。サーバーに直接アクセスできない (または匿名でアクセスしたい) 場合の解決策は、 クライアントです。
リバースプロキシというと、クライアントがサーバーからデータを取得するのを仲介するのがフォワードプロキシなので、サーバーがデータを取得するのは当然リバースプロキシが仲介するのが普通だと考えられ、理解しにくい人も多いと思います。はい、しかしそうではありません。両者は大きく異なります。これが理解の難しさです。以下の写真を見てみましょう。
B村にはトウモロコシを生産している村人がたくさんいます(生産したトウモロコシが区別できないと仮定します)が、トウモロコシを個別に販売するのは面倒です。顧客はどれがトウモロコシを持っているのか、どれがどれだけの量を持っているのかを知りません。村 B の食堂に販売され (注: クライアントはサーバーです! )、食堂は統合された外部サービスを提供します。トウモロコシを購入する顧客は、そのトウモロコシがどこの会社から出ているのか知りませんので、売店から直接購入することができます。これはリバースプロキシです。
この構造の特徴は、クライアントが誰が本当のサーバー(プロバイダー)であるか分からないことですが、リバースプロキシは多くの場合、リクエストを最適なサーバーに転送して処理するなど、特定の戦略に従って処理します。サーバーのビジー状態。負荷分散戦略のように聞こえますか? はい、リバース プロキシは負荷分散シナリオの実装によく使用されます。Nginxなどの Web サーバーはリバース プロキシ機能をサポートしており、負荷分散の実装に広く使用されています。
要約: これら 2 つのプロキシ メソッドの名前は似ていますが、その目的とアプリケーション シナリオは大きく異なります。
- 機能的な観点から見ると、
フォワードプロキシはクライアントがサーバーに直接アクセスできない(不便)ソリューションであり、
リバースプロキシは複数のサーバーが統一的に外部にサービスを提供するソリューションです。 - ターゲット顧客の観点から見ると、
フォワード プロキシのクライアントはクライアントであり、プロキシはクライアントにサービスを(一度に 1 つずつ)提供します。
リバース プロキシのクライアントはサーバーで、プロキシは複数のクライアントにサービスを提供します。クライアント (通常は複数ですが、単一の場合もあります) サーバーがサービスを提供します - 可視性の観点から、
フォワード プロキシはクライアントから見えます。これはクライアントの能動的な選択の結果です (オプションかどうか、サーバーは受動的にのみ選択できます)。クライアントは直接アクセスするかどうかを選択できます (アクセスが取得できるかどうか)。
は別の問題です。)、クライアントからは見えないプロキシを介してリバース プロキシにアクセスすることも選択できます。これは、クライアントの受動的な選択の結果 (サーバーの能動的な選択の結果) です。つまり、クライアント現在アクセスしているサービスが使用されているかどうかはわかりません。リバースプロキシ
PS: 次の図に示すように、これら 2 つのプロキシ メソッドがネットワーク リクエスト内に共存する場合があります。
全員が自分の役割を果たしており、争いはまったくありません
友達、わかりますか?