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 のインストールと設定方法のグラフィックチュートリアル

推薦する

JS配列の組み込みトラバーサルメソッドとその違いについての簡単な説明

目次forEach() (ES6) メソッドmap() (ES6) メソッドflatMap() メソ...

Linux サーバーが処理できる接続数をご存知ですか?

序文まず、TCP 接続を識別する方法を見てみましょう。システムは、(src_ip、src_port、...

MySQLでカンマ区切り値の列を列に変換する方法

序文場合によっては、第 1 正規形設計パターンに従わないビジネス テーブルに遭遇することがあります。...

Linux で Oracle データベースをバックアップするためのスケジュールされたタスクの設定に関するチュートリアル

1. データベースの文字セットを確認するデータベースの文字セットは、Linux で設定された環境変数...

HTMLフォーム要素の詳しい解説(パート2)

HTML 入力属性値属性value 属性は、入力フィールドの初期値を指定します。 <フォーム...

透明な入力ボックスにアイコンを追加する HTML コード

最近、弁護士推薦のウェブサイトを作成していたのですが、検索ボックスに問題がありました。検索ボックス内...

HTML 選択ボックスのプレースホルダーの作成に関する問題

テキスト入力でプレースホルダーを使用していますが、問題なく動作します。しかし、選択ボックスにはプレー...

CSS フロントエンドの知識ポイントのまとめ(必読)

1. CSS の概念: (カスケーディング スタイル シート)利点: 1. コンテンツとプレゼンテ...

js を使ってシンプルな虫眼鏡効果を実現

この記事の例では、参考までに簡単な虫眼鏡効果を実現するためのjsの具体的なコードを共有しています。具...

Windows 版 MySQL のインストール、起動、基本設定に関する詳細なグラフィック チュートリアル

ダウンロード:ステップ 1: ウェブサイトを開きます (ダウンロードするには公式ウェブサイトにアクセ...

ウェブページのCSSの優先順位について詳しく説明します

CSS の優先順位について話す前に、CSS とは何か、CSS が何に使用されるのかを理解する必要があ...

Web2.0製品と機能の簡単な紹介

<br />Web2.0とは何ですか? Web2.0にはソーシャルネットワーク製品とその...

ウェブサイトの高速化における CDN、SCDN、DCDN の違いは何ですか?どうやって選ぶ?

1. CDNこれは、Web サイト上で最もよく使用される加速機能です。分散サーバー レイアウトによ...

Linux ベースの MySQL マスター スレーブ構成の全プロセスを記録する

mysql マスタースレーブ構成1. 準備ホスト: 192.168.244.128スレーブ: 192...