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 の使い方の説明

推薦する

HTMLコードに基づく画像断片化読み込み機能の実装

今日は断片化された画像の読み込み効果を実装します。効果は次のとおりです。 これを 3 つのステップで...

ウェブページ制作時のコードコメントの書き方

<br />私の仕事で使用しているアノテーションの書き方の基準をまとめました。技術的な内...

Nginx を使用して DoNetCore を Alibaba Cloud にデプロイする方法

基本的な環境設定まずはご自身でドメイン名とサーバーを購入してくださいクラウドサーバーECSに基づいて...

html mailto(メール)の実用化について

ご存知のとおり、mailto は Web デザインと制作において非常に実用的な HTML タグです。...

CSS で div 凹角スタイルを実装するサンプル コード

通常の開発では、凸型の丸い角、つまり border-radius 属性を使用するのが一般的です。凹角...

MySql ビュー トリガー ストアド プロシージャの詳細な説明

ビュー:一時テーブルを繰り返し使用する場合、将来の使用を容易にするために別名を付けることができます。...

Docker のコンテナ データ ボリュームの概要

目次Dockerコンテナのデータ量データボリュームの使用方法1: コマンド-vを使用して直接マウント...

DockerHubイメージリポジトリの使い方の詳しい説明

これまで使用していたイメージはすべて DockerHub パブリック リポジトリから取得していました...

例によるMySql CURRENT_TIMESTAMP関数の分析

時間フィールドを作成するときデフォルトのCURRENT_TIMESTAMPデータを挿入する際、このフ...

虫眼鏡の詳細のJavaScript実装

目次1. レンダリング2. 実施原則3. まとめ1. レンダリング 2. 実施原則幅と高さが等しい拡...

HTMLウェブページの基本概念の簡単な分析

ウェブページとは何ですか? HTML ドキュメントがブラウザカーネルによってレンダリングされた後に表...

Zabbix で複数の JVM プロセスを監視する方法

1. シナリオの説明:私たちの環境ではマイクロサービスを使用しています。各プログラムには個別のプロセ...

Vue3でカルーセルコンポーネントをカプセル化する方法

目的カルーセルコンポーネントをカプセル化して直接使用します。具体的な内容は以下のとおりです。一般的な...

SpringBoot と Vue の相互作用におけるクロスドメイン問題の解決策

目次ブラウザ同一生成元ポリシー1. VUEフロントエンド構成プロキシはクロスドメインの問題を解決しま...

VMware Esxi のルート パスワードを忘れた後に正常に取得する方法

CentOS6 インストール ディスク (任意のバージョン) を準備するか、別の pnux インスト...