場所が一致する nginx 変数はどれですか?
$request_uri
一致する場所のタイプは何ですか?
=
で始まる
^~
で始まる完全一致を示します。これは正規表現ではないことに注意してください (優先順位が高められた文字列一致です) - その目的は、正規表現よりも優先されることです。表現の一致。場所が最も一致する場合、正規表現の検出は実行されません。
#~ の先頭は、大文字と小文字を区別する正規一致を示します。
~* の先頭は、大文字と小文字を区別しない正規一致を示します
!~ && !~*: 大文字と小文字を区別する非一致の正規と、大文字と小文字を区別しない非一致の正規を示します
文字列一致
/ユニバーサル一致。他に一致するものがない場合、すべてのリクエストが一致します。場所の検索順序
最初に完全一致 =
^~
注:
一致が成功すると、一致は直ちに停止され、リクエストは現在の一致ルールに従って処理されます。 : 文字列一致が最初に検索されますが、最新のもののみが記録されます。長期一致の場合は、通常の一致を検索し続けます。通常の一致がある場合は、通常の一致がヒットします。通常の一致がない場合は、最長の文字列一致がヒットします。 (^~ が最長一致の場合、直接ヒットし、正規表現の検索を停止します)完全一致
location = /images/test.png { echo 'config1'; } location /images/test.png { echo 'config2'; } location \/images\/test\.png$ { echo 'config3'; }この時点で要求された場合http :/ /127.0.0.1/images/test.png 何が出力されますか?
出力
config1
完全一致の特殊なケース
location = / { index index.html; } location / { echo 'config2'; }このとき、
http://127.0.0.1
と入力すると何が出力されるでしょうか? は config2 の出力です。正確に一致する優先度が機能しないのはなぜですか?
http://127.0.0.1/index.html
、これはconfig2 で、ヒットします!
、したがって、/
との一致に完全一致を使用するべきではありません。
location /images/test.png { echo 'config1'; } location ^~ /images/ { echo 'config2'; } location ~ \/images\/test\.png$ { echo 'config3'; } location ~ \/images\/ { echo 'config4'; }このとき
http://127.0.0.1/images/test.png
をリクエストすると何が出力されるでしょうか?もちろん は
config3
にヒットします (config1 が最長一致文字列ですが、この時点では記録のみが行われ、通常の一致は必要です)後で検索すると、config3 の通常の一致がヒットします)、
文字 文字列一致優先度の改善 (^~)
location /images/ { echo 'config1'; } location ^~ /images/test.png { echo 'config2'; } location ~ /images/test\.png$ { echo 'config3'; } location ~ \/images\/ { echo 'config4'; }ご要望があれば http://127.0.0.1/images/test.png このとき、何が出力されるでしょうか?
はもちろん
config2
にヒットします (文字列の一致が最初に検索されるため、この時点では config2 が最長の文字列一致であることがわかり、 ^~ マッチング方法なので、正規表現の検索をやめて直接ヒットしてください!)
^~
記号は特別であり、文字列マッチングの優先順位を高め、文字列マッチングよりも優先されます。通常のマッチング。関連する推奨事項: 「
Nginx チュートリアル
以上がnginx locationディレクティブの詳細な説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。