使い方
- nginx の設定ファイルから location の定義行だけを1行ずつ貼り付ける(
location ~* \.(png|jpg)$ {のように先頭部分だけでよく、{は無視される)。 - 実際にアクセスされそうなリクエストパスをテスト欄に1行ずつ入力する。
- 各パスがどの location にマッチするか、その理由とともに表で表示される。
仕組み・計算式
nginx 公式ドキュメントの ngx_http_core_module(location ディレクティブ)の説明通り、location の選択は次の順で行われる。まず = を付けた完全一致の location を調べ、URIと完全一致すればその時点で検索を終了する。次に、modifier なし、または ^~ を付けた「前方一致」の中から最も長く一致するものを1つ選ぶ。それに ^~ が付いていれば正規表現の検査を行わずそのまま確定する。付いていなければ続けて ~(大小文字を区別)と ~*(区別しない)の正規表現を設定ファイルの記述順に検査し、最初に一致したものを採用する。どの正規表現にも一致しなければ、先ほどの最長の前方一致 location を使用する。
現場の落とし穴:正規表現の location は「より具体的」や「後ろに書いたもの」が優先されるのではなく、記述順で最初に一致したものが採用される。緩い正規表現を先に書くと、後ろのより意図に合う正規表現が評価されないまま終わる。逆に前方一致は記述順ではなく一致する文字列の長さで優劣が決まり、正規表現の「上から順」の直感をそのまま当てはめると誤解になる。^~ 付き前方一致が、後ろに書いた画像拡張子などの正規表現より優先される点も実運用でよく誤解される。
よくある質問
Q. 同じ長さの前方一致 location が複数あるとどうなりますか?
A. nginx の実装は内部的な木構造の走査順に依存するため、設定ファイル上の並び順に頼らずパターンを重複させない設計が望ましい。本ツールでは定義順で先に見つかったものを表示する簡易的な扱いとしている。
Q. location / は必ず必要ですか?
A. 必須ではないが、どの location にも一致しないリクエストの受け皿として location / を用意しておくと、意図しない404を防ぎやすい。
Q. PCRE特有の正規表現構文をこのツールで試せますか?
A. 本ツールはJavaScriptの正規表現エンジンで簡易判定しているため、PCRE固有の構文は正しく評価できない場合がある。基本的な文字クラスや量指定子、$によるパス末尾判定は共通して動作する。
関連ツール
最終更新・根拠の確認日: 2026-09-10 · カテゴリ: Linux・サーバー