LAOX ニュース
en ja zh

nginx 設定入門 (location 編)

2021-05-08

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 ブロックに一致する意味になるわけです。

おすすめの記事