location ブロックは server ブロック内に定義します。
基本的な location ブロックは以下のように書きます。
location / {
root /data/www;
}
書式
location [ = | ~ | ~* | ^~ ] uri { ... }
location @name { ... }
プリフィックス | 意味 |
---|---|
なし | 前方一致 |
= | 完全一致 |
~ | 正規表現 (大小文字を区別する) |
~* | 正規表現 (大小文字を区別しない) |
^~ | 一致以降の正規表現を評価しない |
プリフィックスなしは、あくまで前方一致であることに注意が必要です。
location /foo { ... }
上記の場合、
/foo = もちろん一致
/foo/ = 一致
/foobar = これも一致します
/foo のみ一致させたい場合は、
location = /foo { ... }
のように = イコールをプリフィックスとして用います。
上記の場合 /foo/ も不一致となります。
PHPの処理でよく見掛けるこれ
location ~ \.php$ { ... }
を読み解くと、~
チルダのプリフィックスなのでURL部は正規表現で大文字と小文字を区別します。
URL部の \.
は正規表現としてのピリオド(任意の一文字)ではなくピリオド文字そのものとして扱う為のエスケープなので . の前に \ を付けます。
php$
の $ は正規表現で終わりを示すので、例えば phpx などを一致させません。
これらを総合すると、URLの末尾が .php であればすべてこの location ブロックに一致する意味になるわけです。