Nginx locationディレクティブ優先順位ルール(=, ^~, ~, ~*)の完全整理
Nginx Infrastructure DevOps Web
結論
最優先は = (完全一致)、正規表現の評価をスキップさせたい重要なパスには ^~ を指定します。
# 結論:location マッチング修飾子の記述例
location = / { ... } # 1. 完全一致(即確定)
location ^~ /images/ { ... } # 2. 正規表現評価スキップ
location マッチング優先度一覧
| 優先度 | プレフィックス修飾子 | マッチ種別 | 特徴・評価挙動 |
|---|---|---|---|
| 1 (最優先) | = | 完全一致 | 一致した場合、即座に評価を確定して終了 |
| 2 | ^~ | 記号付き前方一致 | 一致した場合、以降の正規表現マッチをスキップ |
| 3 | ~ / ~* | 正規表現 (大文字区別/不区別) | 設定ファイルの上から順に評価 |
| 4 (最低) | (修飾子なし) | プレフィックス前方一致 | 最も長く一致した箇所を一時保持し正規表現へ進む |
設定手順
/favicon.icoや/robots.txtなどの完全一致パスにはlocation = /favicon.icoを使用する- 静的アセットディレクトリ(
/static/等)で正規表現チェックをパスさせたい場合はlocation ^~ /static/を指定する nginx -tで構文チェック後、nginx -s reloadで適用しアクセス確認を行う