location パス(nginx)
リクエスト URI のパスに応じて設定を適用
パス評価
- 前方一致
- 最長一致の法則
URI パスがどのように正規化されるかを確認したい場合には、変数の
$uri
を使ってアクセルログなどに出力するプレフィックスの利用
プレフィックス 意味 なし 前方一致(後方参照) ^~ 前方一致(後方不参照)
正規表現より優先順位が高い= 完全一致
パスが等しい場合~ 正規表現(大文字/小文字を区別) ~* 正規表現(大文字/小文字を区別しない) プレフィックスを使った正規表現
目的 設定例 説明 /
にだけ一致location = / /data
にだけ一致location = /data 1 文字でも異なると一致しない /data/
には一致しない/
で始まるすべてのパスに一致location / ただし、パス評価の優先順位により完全一致、最長一致、正規表現が優先される /data/
で始まるパスに一致location ^~ /data/ 一致した後、ほかの location を検索しない /example/xxx.php
に一致(xxx は任意の文字列)location ~ ^/example/(.*.php)$ 大文字/小文字を区別するため /EXAMPLE/XXX.PHP
には一致しない
パス評価の優先順位
- 1 つの server コンテキスト内に複数の location コンテキストを記述できる
優先順位 プレフィックス 1 = (完全一致) 2 ^~ (前方検索) 3 ~ (正規表現) 4 ~* (正規表現) 5 なし (前方検索)
- 名前付き location
URI パスの代わりに
@名前
のようにできるエラーページを @error に内部リダイレクト
location / ( error_page 404 @error; ) location @error ( // TODO )