1. ホーム
  2. nginx

[解決済み】Nginxのロケーション優先順位

2022-04-04 15:53:45

質問

ロケーションディレクティブはどのような順序で発火しますか?

どのように解決するのですか?

からの 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 ] 
}

それでもわかりにくい場合は 詳しい説明はこちら .