Nginx フォワードプロキシとリバースプロキシの違いと原理分析

Nginx フォワードプロキシとリバースプロキシの違いと原理分析

1. フォワードプロキシとリバースプロキシの違い

フォワード プロキシはクライアントのプロキシとして機能し、リバース プロキシはサーバーのプロキシとして機能します。

1.1 フォワードプロキシ

フォワード プロキシ サーバーは、クライアントとサーバーの間に配置されます。サーバーからデータを取得するために、クライアントはプロキシ サーバーに要求を送信し、ターゲット サーバーを指定します。プロキシ サーバーは、ターゲット サーバーから返されたデータをクライアントに転送します。ここで、クライアントはいくつかのフォワード プロキシ設定を行う必要があります。

例: 壁を登る

フォワードプロキシでは、クライアントのリクエストはプロキシされる

1.2 リバースプロキシ

リバース プロキシでは、クライアントはプロキシを意識せず、設定なしでアクセスできます。クライアントはリバース プロキシ サーバーにリクエストを送信し、リバース プロキシ サーバーはターゲット サーバーを選択してデータを取得し、クライアントに返します。このとき、リバース プロキシ サーバーとターゲット サーバーは外部に対して 1 つのサーバーです。公開されているのはプロキシ サーバーのアドレスであり、実際のサーバーの IP アドレスは隠されています。

2. nginxリバースプロキシの使用

nginx設定ファイルnginx.confに新しい仮想ホスト設定を作成します。

サーバー{
    8080を聴く;
    server_name ローカルホスト;
    
    場所 /カテゴリー/ {
      proxy_pass http://localhost;
    }
  }

上記の構成では、

listen は nginx が listen するポートを示します。

server_name は、nginx にアクセスするときにブラウザに入力するドメイン名です。IP アドレスを直接入力することもできます。複数バインドする場合は、スペースで区切ることができます。

location は、nginx がポートを listen するときに一致する URL を示します。nginx にアクセスする URL に /category/ が含まれている場合、プロキシが実行されます。

proxy_pass は、nginx がクライアントのリクエストをプロキシするターゲットを示します。

ここで proxy_pass のパスの書き方に注意してください。上記のようにパスが / なしで終わる場合、それは相対パスを意味します。そうすると、nginx はリクエストを転送するときに元の URL の /category/ を傍受しません。たとえば、ブラウザが http://localhost:8080/category/findAll にアクセスする場合、nginx が実際に送信するリクエスト アドレスは http://localhost/category/findAll です。

proxy_pass のターゲット パスの末尾に絶対パスを示す / が設定されている場合、nginx はリクエストを転送するときに元の URL の /category/ をインターセプトします。たとえば、ブラウザーが http://localhost:8080/category/findAll にアクセスすると、nginx によって実際に送信されるリクエスト アドレスは http://localhost/findAll になります。

設定時に、必要に応じて / を含めるかどうかを決定する必要があります。そうしないと、実際の使用時に nginx は常に 404 エラーを報告します。

ここでの設定では、バックエンド インターフェイス パスに /category が含まれているため、相対パスを使用してこれを保持します。

以上がこの記事の全内容です。皆様の勉強のお役に立てれば幸いです。また、123WORDPRESS.COM を応援していただければ幸いです。

以下もご興味があるかもしれません:
  • nginx フォワード プロキシを使用してイントラネット ドメイン名転送プロセス分析を実装する
  • nginx を介して方向プロキシを実装するプロセスの図
  • nginxフォワードプロキシとリバースプロキシの詳細な説明
  • リバースプロキシ設定を実装するためのユニバーサルnginxインターフェース
  • 分散アーキテクチャにおけるフォワードプロキシとリバースプロキシに関する面接の質問

<<:  jsは水平および垂直スライダーを実現します

>>:  MySQL 8.0.18 のインストールと設定方法のグラフィックチュートリアル

推薦する

Cronジョブを使用してCpanelでPHPを定期的に実行する方法

cpanel 管理バックエンドを開き、「詳細」オプションの下に「Clock Guardian Job...

1 分で Nginx のバージョンをスムーズにアップグレードおよびロールバックする方法

今日は、企業の実際の本番環境でよく遭遇する、Nginx を新しいバージョンにアップグレードし、古いバ...

JavaScript で長い画像のスクロール効果を実装する

この記事では、JavaScriptの長い画像スクロールの具体的なコードを参考までに共有します。具体的...

CSS3で実装されたグラデーションスライド効果

成果を達成する コードhtml <div class="css-slideshow&...

Centos7 で NIS を構成する詳細な手順

目次原理ネットワーク環境の準備インストール前の準備NIS サーバー操作NIS クライアント操作原理N...

MySQL フルテキスト インデックス、ジョイント インデックス、Like クエリ、JSON クエリのうち、どれが高速ですか?

目次クエリの背景1. クエリをいいね2. JSON関数クエリ3. 共同インデックスクエリ4. 全文イ...

トランジションコンポーネントのアニメーション効果を使用した Vue サンプルコード

トランジションドキュメントアドレスは、フェードインとフェードアウト効果を実現するための背景ポップアッ...

HTML構造化実装方法

DIV+css構造 CSSレイアウトを学んでいますか?まだ純粋な CSS レイアウトを完全に習得でき...

Vue+Bootstrapでシンプルな学生管理システムを実現

参考までに、vueとbootstrapを使って比較的シンプルな生徒管理システムを作りました。具体的な...

HTML要素を非表示にするいくつかの方法

1. CSSを使用するコードをコピーコードは次のとおりです。スタイル="display:n...

IE6 フォントを定義できません: 13px サイズは無効です。IE6 は自動的に大きいフォント ソリューションを表示します。

数日前、Web ページのモジュールを調整していたとき、ページのフォント サイズを 13px に設定し...

Mysql クエリの結果セットを JSON データに変換するサンプル コード

Mysql はクエリ結果セットを JSON データに変換します 序文 学生テーブル 学生スコアテーブ...

MySQL DMLステートメントの使用に関する詳細な説明

序文:前回の記事では、注意深い学生であれば発見できたかもしれない DDL ステートメントの使用法を中...

nginxコンテナ設定ファイルの独立した実装

コンテナを作成する [root@server1 ~]# docker run -it --name ...

Tomcatがセッションを管理する方法の例

ConcurrentHashMapを学習しましたが、どのように適用すればよいかわかりませんか? To...