ホームページ  >  記事  >  運用・保守  >  Nginx Location ディレクティブの URI 一致ルールとは何ですか?

Nginx Location ディレクティブの URI 一致ルールとは何ですか?

WBOY
WBOY転載
2023-05-14 23:58:191591ブラウズ

1. はじめに

location ディレクティブは http モジュールの中核となる設定であり、事前定義された URL マッチング ルールに基づいてユーザーから送信されたリクエストを受け取ります。その結果、リクエストはバックエンドサーバーに転送され、不正なリクエストは直接拒否され、403、404、500 エラー処理などが返されます。

2. ロケーション命令の構文

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

3. URI マッチング モード

location ディレクティブは 2 つのマッチング モードに分かれています:
1> 通常の文字列マッチング: with = Rules先頭文字 (~)
2> で始まるか、先頭文字なしで始まる場合 (~)

2> 通常の一致: ~ または ~* で始まる場合は通常の一致を示し、~* は通常の一致が大文字と小文字を区別しないことを示します

4 、location uri マッチング ルール


nginx がリクエストを受信すると、リクエストの uri 部分をインターセプトし、location ディレクティブで定義されたすべての uri マッチング パターンを検索します。サーバー モジュールでは、さまざまな URL リクエストに一致する複数のロケーション命令と、複数の異なるロケーション構成の URI マッチング パターンを定義できます。全体的なマッチング原則は、最初に通常の文字列パターンに一致し、次に通常のパターンに一致します。 uri 部分のみが認識されます。たとえば、リクエストは /test/abc/user.do?name=xxxx


リクエストが来た後、このリクエストに一致する nginx のプロセスは次のようになります。 :


1> まず、location = /test/abc/user.do { … }


2> のように、= で始まる完全一致を検索します。最大のプレフィックスを使用して通常の一致を検索します。 原則として、次の 2 つの場所がある場合、後者が一致します
* location /test/ { … }
* location /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 ^~ / { … }: ^~ は、通常のマッチングをオフにすることを意味します。この通常のマッチング パターンが検索されると、通常のマッチング パターンは検索されなくなります。

rree

以上がNginx Location ディレクティブの URI 一致ルールとは何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はyisu.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。