maeshimaの日記

メモ書きです

nginx の location ディレクティブに関するメモ

NginxHttpCoreModuleを見て。意訳的なメモ。

"~", "~*"のプレフィックス

正規表現を使う時には "~" か "~*" のプレフィックスの指定が必要。それぞれ

  • "~"は大文字小文字を区別する
  • "~*"は大文字小文字を区別しない

という意味。

マッチングの順序

  • 文字列でのマッチが最初にチェックされて、次に正規表現でのマッチがチェックされる。
  • 文字列でのマッチは一番具体的なマッチが使われる。ただしその後に正規表現のマッチがある場合は引き続き続行。正規表現で最初にマッチしたものが使われる。正規表現でのマッチを使いたくない場合は、(一番具体的な)文字列マッチのディレクティブに "^~" のプレフィックスを付ける。
  • "=" のプレフィックスは正確なマッチをしたいときに使う。これでマッチしたらその後のマッチは行われない。
  • "=" や "^~" のプレフィックスなしでも、文字列でのマッチで正確なものがあったらその後のマッチは行われない。
  • nginx はデコードされたURIで判断される。"/images/%20/test" とマッチさせたい場合は"/images/ /test" のように location ディレクティブに書く必要がある。