Nginxロケーションの優先順位


186

ロケーションディレクティブはどの順序で実行されますか?

回答:


352

以下からのHTTPコアモジュールのドキュメント

  1. クエリと完全に一致する「=」プレフィックスを持つディレクティブ。見つかった場合、検索は停止します。
  2. 従来の文字列を持つ残りのすべてのディレクティブ。この一致で「^〜」接頭辞が使用された場合、検索は停止します。
  3. 構成ファイルで定義されている順序での正規表現。
  4. #3が一致した場合、その結果が使用されます。それ以外の場合は、#2の一致が使用されます。

ドキュメントの例:

location  = / {
  # matches the query / only.
  [ configuration A ] 
}
location  / {
  # matches any query, since all queries begin with /, but regular
  # expressions and any longer conventional blocks will be
  # matched first.
  [ configuration B ] 
}
location /documents/ {
  # matches any query beginning with /documents/ and continues searching,
  # so regular expressions will be checked. This will be matched only if
  # regular expressions don't find a match.
  [ configuration C ] 
}
location ^~ /images/ {
  # matches any query beginning with /images/ and halts searching,
  # so regular expressions will not be checked.
  [ configuration D ] 
}
location ~* \.(gif|jpg|jpeg)$ {
  # matches any request ending in gif, jpg, or jpeg. However, all
  # requests to the /images/ directory will be handled by
  # Configuration D.   
  [ configuration E ] 
}

それでも混乱する場合は、ここでより長い説明を示します。



4
//documents/ルールの両方がリクエスト/documents/index.htmlに一致することに注意してください。ただし、最も長いルールであるため、後者のルールが優先されます。
arrakis_sun 2017

69

この順番で発火します。

  1. = (丁度)

    location = /path

  2. ^~ (前方一致)

    location ^~ /path

  3. ~ (正規表現では大文字と小文字が区別されます)

    location ~ /path/

  4. ~* (大文字と小文字を区別しない正規表現)

    location ~* .(jpg|png|bmp)

  5. /

    location /path


3
^〜(前方一致)非常に重要
iwind

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.