はじめに
nginxのlocationの設定でつまづくことがあったので、まとめる。
気付いた点があれば都度更新。
基本
URIのパス毎の設定を記述できる。
基本的には下記の形で記述できる。
location プレフィックス URIのパス {
# パスでの設定
}
プレフィックスの種類
プレフィックスというものでパスの評価形式を指定できる。
下記テーブルの上から記述された順番で優先度が高く、
nginxのlocationの設定は優先度が最も高い設定が一つだけ適用される。
| プレフィックス | 説明 |
|---|---|
| = | 完全一致 |
| ^~ | 前方一致。一致したら正規表現を適用しない。 |
| ~ | 正規表現(大文字・小文字を区別する) |
| ~* | 正規表現(大文字・小文字を区別しない) |
| なし | 前方一致 |
前方一致の記述が複数ある場合は、一致する文字列が一番長いものが適用される。
正規表現の記述が複数ある場合は、設定ファイルに書いた順番で最初に一致したものが適用される。
よく使いそうな正規表現
トレイリングスラッシュ有無の統一
location ~ ^/(.*)/$ {
return 301 path # トレイリングスラッシュを消す
}
拡張子の排除
location ~ \.拡張子$ {
# 設定を記述
}