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

推薦する

HTML CSS JS はタブページのサンプルコードを実装します

コードをコピーコードは次のとおりです。 <html xmlns="">...

webpackでvue環境を構築する際の異常なエラーを解決する

目次まず、package.jsonを設定します次にwebpackツールをインストールしますwebpa...

シームレスなカルーセル効果を実現するネイティブ js

参考までに、ネイティブjsでカルーセル効果(シームレススクロール)を実現しています。具体的な内容は以...

CSS (カスケーディング スタイル シート) の一般的な用語の概要

CSS を使用する場合は、DOCTYPE (ドキュメント タイプ定義) を記述することを忘れないでく...

CSS を使用して 3 列レイアウトを実装するサンプル コード。中央の列は適応型で、テキスト サイズに応じて幅が変わります。

Baiduのインタビューで遭遇する質問は、次のレイアウト効果を達成する必要がある。 中央の紫色の列...

JavaScript の重要なブレークポイント デバッグ手法の概要 (推奨)

目次デバッガーを使用する理由は何ですか? Chromeデバッガーの基本的な使い方VS Code によ...

初心者向けMySQLシリーズチュートリアル

目次1. 基本概念と基本コマンド1) 基本的な概念2) 基本コマンド2. SQL文の記述順序と実行順...

JavaScript の querySelector メソッドと getElementById メソッドの違いを分析する

目次1. 概要1.1 querySelector() と querySelectorAll() の使...

Bootstrap Webページレイアウトグリッドの実装

目次1. Bootstrapグリッドシステムの仕組み1.1 12グリッドシステム1.2 Bootst...

ウェブページの画像最適化ツールと使用方法のヒントの共有

ウェブページの基本要素として、画像はページの読み込み速度に影響を与える重要な要素の 1 つです。画像...

タブステータスバーの切り替え効果を実現するための js と jQuery

今日は、タブ バーをクリックして切り替えるという目的を実現するために、js と jQuery を使用...

CSS3 フィルター属性の使い方の紹介

1. はじめにフロントエンドページのアニメーション効果を記述する場合、filter 属性は多かれ少な...

ウェブページの画像の回転を実現するjs

この記事では、Webページの画像の回転を実現するためのjsの具体的なコードを参考までに共有します。具...

CocosCreatorでリストを作成する方法

CocosCreator バージョン: 2.3.4 Cocos には List コンポーネントがない...

シンプルなウェブ計算機を実装するJavaScript

背景私は新しいプロジェクト チームに配属されたので、プロジェクトでは js を使用する必要があります...