Nginx 設定場所のマッチング優先順位の簡単な分析

Nginx 設定場所のマッチング優先順位の簡単な分析

序文

Nginx 構成のサーバー ブロック内の場所は、リクエスト URI を一致させるために使用され、異なる URI を異なる方法で処理できるようにします。

場所の種類とマッチング成功の条件

  • location = expression {} 完全一致。URI と式が完全に同じ場合にのみ一致が成功します。
  • location expression {} 通常の一致。URI の先頭部分の文字が式と同じであれば、一致は成功します。
  • location ^~ expression {} 通常の一致。URI の最初の部分が式と同じであれば、一致は成功します。
  • location ~ regex {} 正規表現によるマッチング(大文字と小文字を区別);
  • location ~* regex {} 正規表現マッチング(大文字と小文字を区別しません);

要約は、完全一致、通常一致、標準一致の 3 つのカテゴリに分類できます。

マッチングロジックと優先順位

Nginx に入るリクエストの場合、その URI は複数の場所の一致条件を満たす可能性がありますが、リクエストは最終的に 1 つの場所のロジックによってのみ処理される (リダイレクトはカウントされない) ため、一致時には優先順位の違いが存在する必要があります。 Nginx のマッチングロジックは次のとおりです。

1. 完全一致を実行する

リクエスト URI が location = と一致する場合 (完全一致条件を満たす場合)、location の内容が実行され、他の一致は実行されません。それ以外の場合は、次の項目を参照してください。

2. 通常のマッチングを実行する

次に、Nginx は URI をすべての通常の一致する場所 (^~ タイプまたは unsigned タイプに関係なく) と比較し、最も一致度の高い場所を見つけます。場所が ^~ タイプの場合、一致を停止し、場所の内容を実行します。一致度が最も高い場所が unsigned タイプの場合、この unsigned 場所を保持し、次の通常の一致を続行します。URI が通常の一致する場所の条件を満たさない場合は、次のステップに直接進みます。

3. 正規表現マッチングを実行する

正規表現のマッチングは、場所の順序に関係します。Nginx は上から下に向かってマッチングします。場所が一致すると、その場所のロジックが実行され、後続のすべての正規表現の場所は無視され、マッチングが終了します。正規表現が一致しない場合は、以前に予約された符号なしの場所が実行されます。以前に場所が予約されていない場合は、404 が直接返されます。

要約する

以上がこの記事の全内容です。この記事の内容が皆様の勉強や仕事に何らかの参考学習価値をもたらすことを願います。123WORDPRESS.COM をご愛顧いただき、誠にありがとうございます。

以下もご興味があるかもしれません:
  • Nginx 構成ディレクティブの場所マッチャーの優先順位とセキュリティの問題
  • nginx ロケーション優先度の詳細な説明

<<:  純粋な JS を使用して vue.js で双方向バインディング機能を実装する方法

>>:  MySQL での replace と replace into の使い方の説明

推薦する

CSS の高さの崩壊問題の解決

1. 崩壊度が高いドキュメント フローでは、親要素の高さはデフォルトで子要素によって拡張されます。つ...

メンテナンスしやすい CSS コードを書くための 5 つのガイドライン

1. スタイルシートの先頭にコメント ブロックを追加して、スタイルシートの作成日、作成者、タグ、その...

JavaScript でプライベート変数を宣言する 2 つの方法

序文JavaScript は、キーワードを使用してプライベート変数を宣言できる他の言語とは異なります...

Vue ElementUI は非同期読み込みツリーを実装します

この記事の例では、vue ElementUI の非同期読み込みツリーを実装するための具体的なコードを...

CSSはクーポンスタイルを実装するために放射状グラデーションを使用します

この記事では、CSS で放射状グラデーションを使用して、次の図に示すクーポン スタイルの効果を実現す...

jQueryは画像追従効果を実現します

この記事では、画像フォロー効果を実現するためのjQueryの具体的なコードを参考までに紹介します。具...

Vueプロジェクトでコンポーネントをカプセル化する簡単な手順

目次序文Toastコンポーネントをカプセル化する方法ユースケース具体的な実装要約する序文ビジネスが発...

Webフロントエンドツール、Sublime Text 2の紹介

Sublime Text 2 は、軽量でシンプル、効率的なクロスプラットフォーム エディターです。ブ...

Vueは虫眼鏡付きの検索ボックスを実装します

この記事では、Vueを使用して虫眼鏡付きの検索ボックスを実装する方法を紹介します。具体的な内容は次の...

プロジェクトを素早く構築するためのvite+vue3.0+ts+element-plusの実装

目次バイト機能使用環境プロジェクトを構築する構成vite.config.ts tsconfig.js...

Vue カスタム オプション時間カレンダー コンポーネント

この記事の例では、参考のためにvueカスタムオプションタイムカレンダーコンポーネントの具体的なコード...

MySqlを最適化するためにnot inを使用する方法

最近、プロジェクトで選択クエリを使用する際に、未使用の主キー ID を除外するために not in ...

shtmlとhtmlの違い

Shtml と asp は似ています。shtml という名前のファイルでは、asp の命令と同様に、...

nginxリバースプロキシのマルチポートマッピングの実装

コードの説明1.1 http:www.baidu.test.com のデフォルトは 80 で、リバー...

macOS SierraにApache2.4+PHP7.0+MySQL5.7.16をインストールする

Mac システムには PHP と Apache が付属していますが、必要なバージョンではない場合があ...