1. はじめに
location ディレクティブは http モジュールの中核となる設定であり、事前定義された URL マッチング ルールに基づいてユーザーから送信されたリクエストを受け取ります。その結果、リクエストはバックエンドサーバーに転送され、不正なリクエストは直接拒否され、403、404、500 エラー処理などが返されます。
2. ロケーション命令の構文
location [=|~|~*|^~|@] /uri/ { … } または location @name { … }
3. URI マッチング モード
location ディレクティブは 2 つのマッチング モードに分かれています:
1> 通常の文字列マッチング: with = Rules先頭文字 (~)
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 ^~ / { … }: ^~ は、通常のマッチングをオフにすることを意味します。この通常のマッチング パターンが検索されると、通常のマッチング パターンは検索されなくなります。
以上がNginx Location ディレクティブの URI 一致ルールとは何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。