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

推薦する

Docker で MySQL をデプロイする詳細なプロセス (Docker でデプロイされる一般的なアプリケーション)

以前にも紹介しました: docker (一般的なアプリケーションのデプロイ): docker dep...

HTML テーブルタグチュートリアル (35): 列間属性 COLSPAN

複雑なテーブル構造では、一部のセルが垂直方向に複数のセルにまたがるため、列間属性 COLSPAN を...

MySQL データベースの Binlog 使用法の概要 (必読)

MySQL データベースにとって binlog バイナリ ログがどれほど重要であるかについては詳し...

Nginx ベースの HTTPS ウェブサイトを設定する手順

目次序文:暗号化アルゴリズム: 1. HTTPS の概要2. NginxはHTTPSウェブサイト設定...

MySQLバックアップとリカバリの実践に関する詳細な説明

1. mysqlbackup の紹介mysqlbackup は、MySQL Enterprise B...

MySQL データベース開発の 36 の原則 (要約)

序文これらの原則は実際の戦闘から要約されています。あらゆる原則の背後には血なまぐさい教訓があるこれら...

CSS の境界線を通して三角形と矢印を実装するサンプルコード

1. CSS ボックスモデルボックスには、余白、境界線、パディング、コンテンツが含まれます境界線の接...

インタラクティブな視覚化 JS ライブラリ gojs の使い方の紹介とヒント

目次1. gojsの紹介2. Gojsのアプリケーションシナリオ3. gojs を選ぶ理由: 4. ...

ウェブページで Enter キーを押すと自動的にフォームを送信し、他のページにジャンプするソリューション

ウェブページでEnterキーを押すと、フォームは自動的に送信され、他のページに移動します。クエリフォ...

xshell を使用して VMware で Linux に接続する方法 (2 つの方法)

【序文】最近、ITOO の試験システムのストレステストを行いたいので、自分のコンピュータに Lin...

Ubuntu 18.04 のsources.listをAlibabaまたはTsinghuaミラーに変更する方法

1. バックアップソースリストUbuntu のデフォルトのソースは国内サーバーではないため、更新され...

MySQL 5.7 でルートパスワードを忘れた後に変更する方法の詳細なチュートリアル

序文長い間、MySQL のアプリケーションおよび学習環境は MySQL 5.6 以前のバージョンであ...

Linux における nohup と & の使い方と違いの詳細な説明

例:例として、Python コード loop_hello.py を使用します。このコードは、ループ回...

モバイルインターネット時代: レスポンシブウェブデザインが一般的なトレンドに

今はモバイルインターネットが急速に発展している時代です。スマートフォンやタブレットはますます普及し、...

MySQLにおける分散ロックの考え方をDBの助けを借りて詳しく説明します

序文スタンドアロン ロックであっても分散ロックであっても、共有データに基づいて現在の操作の動作を判断...