nginx location ディレクティブの優先度
2017.03.19
この記事は最終更新日から1年以上が経過しています。
メモ程度に。。
location ディレクティブ
location ディレクティブは、以下のようになっています。
location [ = | ~ | ~* | ^~ ] uri { ... }
location { } @ name { ... }
location ディレクティブは、URIに応じた様々な制御を行うことができ、使用できる判定のための修飾子は、以下のようになっています。
priority | prefix | detail | example |
---|---|---|---|
1 | = | 完全一致。一致したら、前方一致と正規表現を適用しない | location = /path |
2 | ^~ | 前方一致。一致したら、正規表現を適用しない | location ^~ /path |
3 | ~ | 正規表現(大文字・小文字を区別あり)。 | location ~ /path |
4 | ~* | 正規表現(大文字・小文字を区別なし)。 | location ~* .(jpg|png) |
5 | なし | 前方検索(後方参照。正規表現より優先度が下) | location /path |
優先度に関しては、表の上から順に優先度が高くなります。
location /path/ { # /path/ で始まる全てのURIに一致。 # 優先度的には以下の中で一番低い } location ~ ^/path/ { # /path/ で始まる全てのURIに一致。 # 優先度的には以下の ^~ が優先的に処理される。 } location ^~ /path/ { # /path/ で始まる全てのURIに一致します。 # URIがこの条件に一致したら、以降のいかなるものもチェックの処理されない。 }