Nginx★ロケーションについて

2020年1月12日

Nginxのロケーションの記載では複雑な記号がたくさん出てきます。当初、全てが正規表現だろうと考えていましたが、どうもそうではなさそうです。その辺りも含めて確認しましょう。

ロケーションとは

ロケーションとはいわゆる"場所"のことをあらわします、つまりURIのことを指します。

もう少し具体的に言うと、クライアントが示したURIや内部リダイレクトで転送されたURIなどがそれに該当します。

ロケーションの基本

ロケーションディレクティブの設定は次の二つの方法があります。

  1. 修飾子による表記
  2. 名前付きロケーション

ロケーションの修飾子

ロケーションの修飾子は次のような形式で書くのが一般的です。

location [修飾子] uri {
	設定
}

そしてロケーションの修飾子には次のようなものがあります。正規表現とは若干異なるようなのでその辺りを確認しましょう。

修飾子 処理
空白 前方一致
= 完全一致
~ 大文字・小文字の区別あり正規表現
~* 大文字・小文字の区別なし正規表現
^~ 前方一致。一致後、正規表現の評価なし

名前付きロケーション

名前付きロケーションは次のような形式で記載します。

location @name {
	設定
}

名前付きロケーションはserverコンテキスト内でのみ使用が可能で内部リダイレクトによってアクセスされます。

次に簡単な例を見てみましょう。

server {
	location / {
		try_files $uri @apache;
	}
	location @apache {
		proxy_pass http://127.0.0.1:8080
	}
}

Nginx

Posted by Bright_Noah