nginx

nginx locationの評価順序

More than 1 year has passed since last update.

大雑把に言うと、この表で上にあるものが優先される。

なのでnginx.confに書くときもこの順序で書くとよいと思う。

プレフィックス
説明

=
完全一致。一致したら、前方一致と正規表現を適用しない

^~
前方一致。一致したら、正規表現を適用しない

~
正規表現(大文字・小文字を区別する)。一致したら、なしの適用はしない

~*
正規表現(大文字・小文字を区別しない)。一致したら、なしの適用はしない

なし
前方一致

「なし」とはlocation /のような書き方のこと。

前方一致は、一致する文字列が一番長いもの1個だけが適用される。

正規表現は、設定ファイルに書いた順番で最初に一致したもの1個だけが適用される。

locationはネストできる。

使い分け方としては、

プレフィックス
用途

=
完全に特定のURLだけを対象にしたい場合

^~
ディレクトリ丸ごとを対象にしたい場合。アクセス拒否、BASIC認証、unicornへのプロキシなど

~

~ \.php~ /\.htのように拡張子で指定する場合など

~*と「なし」はややこしくなるので、どうしても必要でなければ使わない方がいいかもしれない。