LoginSignup
0
0

nginxのディレクトリパターンマッチ

Last updated at Posted at 2023-10-06

Nginxのパターンマッチ

プレフィックス 説明 マッチしたとき
A なし 正規表現とのマッチありの前方一致。 ここでマッチしたとしても以降のD,Eで指定される正規表現にマッチしたらそちらが後勝ちする
B ^~ 正規表現とのマッチなしの前方一致。 ここでマッチすれば打ち止めてアクション実行
C = 正規表現とのマッチなしの完全一致。 ここでマッチすれば打ち止めてアクション実行
D ~ 正規表現マッチ(大文字・小文字を区別する)。A,B,Cのマッチに失敗したとき、もしくはAがマッチしたときにマッチ実行される。
E ~* 正規表現マッチ(大文字・小文字を区別しない)。A,B,Cのマッチに失敗したとき、もしくはAがマッチにもマッチ実行される。

ポイントは、プレフィックスなしAと正規表現マッチD,E(~,~*)をペアで考えるということである。
プレフィックスなしマッチAは、後で正規表現マッチD,Eで上書きされ得る、という相互関係がベースにある。
そしてAの上書きされないバージョンとしてのB(^~, 正規表現とのマッチなしの前方一致)がある。

たとえば、

location /static/ {  # Aプレフィックスなし
}
location ~ \.png$ {  # D正規表現(大文字小文字区別する)
}

このとき、正規表現D(~)が、先行する前方一致Aに優先する例外パターンとして機能している。つまり、プレフィックスなし/static/への設定に、正規表現D(~)での設定が優先されるのである。このように、プレフィックスなしAと正規表現パターンD,E(~,~*)との間には、「一般パターンとその例外」という基本構造がある。

さらに例外を上書きする例外として、「正規表現による例外によっても上書きされない強力な指定」としてのB(^~, 正規表現とのマッチなしの前方一致)が加わっている。この例として、先程の例にさらに以下が追加してあったとしよう。

location ^~ /static/js/ {   # B
}

これにより、「/static/js/の配下にある*.pngファイル」はAの指定にもDの指定にマッチしなくなり、Bとしての設定が適用される。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0