Nginx ロケーション ディレクティブ URI マッチング ルールの詳細な概要

Nginx ロケーション ディレクティブ URI マッチング ルールの詳細な概要

1. はじめに

ロケーション命令は、http モジュールのコア構成です。事前に定義された URL マッチング ルールに従って、ユーザーから送信されたリクエストを受信します。マッチング結果に応じて、リクエストをバックグラウンド サーバーに転送し、不正なリクエストを直接拒否し、403、404、500 エラー処理などを返します。

2. 場所コマンドの構文

location [=|~|~*|^~|@] /uri/ { … } または location @name { … }

3. URIマッチングパターン

場所ディレクティブは、次の 2 つの一致モードに分かれています。
1> 通常の文字列マッチング: = で始まるか、先頭に文字 (~) がない規則
2> 正規表現のマッチング: ~ または ~* で始まる場合は正規表現のマッチングを示し、~* は正規表現が大文字と小文字を区別しないことを示します。

4. ロケーションURIのマッチングルール

nginx はリクエストを受信すると、リクエストの URI 部分をインターセプトし、すべてのロケーション指示で定義されている URI 一致パターンを検索します。サーバー モジュールでは、さまざまなロケーション構成のさまざまな URL 要求と URI 一致パターンに一致するように、複数のロケーション指示を定義できます。全体的な一致の原則は、まず共通の文字列パターンに一致し、次に通常のパターンに一致します。 URI 部分のみを認識します。たとえば、リクエストは次のようになります: /test/abc/user.do?name=xxxx

リクエストが届くと、Nginx がこのリクエストを照合するプロセスは次のようになります。

1> まず、次のように = で始まる完全一致があるかどうかを確認します: location = /test/abc/user.do { … }

2> 最大のプレフィックスの原則に基づいて、通常の一致を再度検索します。次の2つの場所がある場合は、後者が一致します。
* 場所 /test/ { … }
* 場所 /test/abc { … }

3> 共通パターンに一致した後、検索は終了せず、現在の一致結果が一時的に保存され、通常の一致パターンの検索が継続されます。

4> すべての通常のマッチングパターンが位置で最初のマッチング項目を見つけた後、この項目が最終的なマッチング結果として使用されます。したがって、通常のマッチング項目のマッチングルールは定義の順序の影響を受けますが、通常のマッチングパターンは影響を受けません。

5> 正規の一致が見つからない場合は、ステップ3でキャッシュされた結果が最終的な一致結果として使用されます。
6> 一致するものが見つからない場合は404を返す

5. 完全一致とあいまい一致の違い
location =/ { … } と location / { … } の違いは次のとおりです。
* 最初のものは完全一致で、/ リクエストにのみ応答します。/xxx や /xxx/xxxx などのすべてのリクエストはプレフィックスとして一致しません。
* 後者は、/ で始まるすべてのリクエストが一致することを意味します。例: /abc、/test/abc、/test/abc/aaaa

6. 規則的なマッチングと不規則なマッチング

1> location ~ /test/.+.jsp$ { … }: 標準の正規表現構文をサポートする正規一致。
2> location ^~ / { … }: ^~ は、正規の一致をオフにすることを意味します。この共通一致パターンが見つかると、正規の一致パターンの検索は続行されなくなります。

...
http {
  ...
  サーバー{
    聞く 80;
    server_name ローカルホスト;

    位置 / {
      ルートhtml;
      インデックス index.html index.htm;
      # すべてを拒否します。リクエストを拒否し、403 を返します。
      # すべて許可; リクエストを許可}

    場所 /abc {
      すべてを否定する;
    }

    場所 ~ /.+\.jsp$ {
      proxy_pass http://location:9090;
    }

    # /test パスの場所にあるすべての jsp ファイルに一致します ~ /test/.+\.jsp$ {
      proxy_pass http://localhost:8080;
    }

    # さまざまなエラーページを定義します error_page 404 /404.html

    エラーページ 500 502 503 504 /50x.html;
    場所 = /50x.html {
      ルートhtml;
    }

    # @変数定義と同様# error_page 403 http://blog.csdn.net; #この定義は許可されておらず、実装するには@を使用して一時変数を定義する必要があります error_page 403 @page403;
    場所 @page403 {
      proxy_pass http://blog.csdn.net;
    } 
  }
}

以上がこの記事の全内容です。皆様の勉強のお役に立てれば幸いです。また、123WORDPRESS.COM を応援していただければ幸いです。

以下もご興味があるかもしれません:
  • Nginx ロケーションマッチングルールの詳細な説明
  • Nginx の書き換え正規マッチング書き換え方法の例
  • Nginx ロケーションマッチングルールの例
  • nginx を使用して複数の条件を一致させる方法
  • Nginx転送マッチングルールの実装
  • nginx マッチングルールの簡単な概要 (推奨)
  • Nginxのさまざまなマッチング方法の詳細な説明

<<:  MySQL 5.7.20 Green Edition のインストールの詳細なグラフィックチュートリアル

>>:  Vueは適切なスライドアウトレイヤーアニメーションを実装します

推薦する

MySQL サービスを起動できない問題の解決策を含む MySQL 5.7.17 インストール チュートリアル

.net 開発に関しては、Microsoft の SQL Server データベースに精通しており、...

LinuxでDHCPサーバーを構築する方法

目次1. 基礎知識: 2. DHCPサーバーの設定: 1. サーバーのIPを確認する2. DHCP ...

TypeScript 名前空間のマージの説明

目次同じ名前の名前空間をマージする名前空間とその他の種類のマージ同じ名前の名前空間とクラスをマージす...

DockerでPrometheusをインストールする詳細なチュートリアル

目次1. Node Exporterをインストールする2. cAdvisorをインストールする3. ...

VMware kali仮想マシン環境の設定方法

1|0 カーネルをコンパイルする(1)uname -rコマンドを実行してカーネルバージョンを表示しま...

Linuxテキスト処理ツールの詳細な説明

1. /etc/passwdファイル内のデフォルトシェルが/sbin/nologinではないユーザー...

プロセスごとにネットワーク帯域幅を監視する Linux ツール Nethogs のインストールと展開

概要Linux 用のオープン ソース ネットワーク監視ツールは数多くあります。たとえば、帯域幅の使用...

Centos8 で NIS ドメイン サービスをセットアップおよび構成するための詳細な手順

目次NIS の紹介ネットワーク環境: 1. 環境の準備(両方のノードが必要) 2.nisマスターサー...

W3C チュートリアル (13): W3C WSDL アクティビティ

Web サービスは、アプリケーション間の通信に関係します。 WSDL は、XML ベースの Web ...

セマンティック XHTML タグの紹介

まず最初に指摘しておきたいのは、人間は視覚的な区分を通じてコン​​テンツの意味を判断できるが、検索エ...

MySQL 4G メモリ サーバー構成の最適化

会社のウェブサイトのアクセス数が増えてくると(1日10万PV以上)、当然MySQLがボトルネックにな...

モバイル開発における 1px ラインの理解と解決策

1pxの線が太くなる理由モバイルプロジェクトに取り組むとき、設計図に従って要素ノードのサイズとスタイ...

MySQL DDLステートメントの使用

序文SQL の言語分類には主に以下の種類があります。 DDLデータ定義言語作成、削除、変更データ定義...

HTML ウェブページハイパーリンクタグ

HTML ウェブ ページのハイパーリンク タグの学習チュートリアル リンク タグの属性 リンクは、ウ...