nginx: 正規表現の一致が等しくない?

nginx: 正規表現の一致が等しくない?

nginxの一致に「not」に相当するものはありますか?

location !~ "\.(html|php)$" {
    deny all;
}

html および php ファイルのみの提供を許可します。代替案は、「すべて拒否」の後に ~ を付けて「すべて許可」することです。残念ながら、これは nginx ファイル内の以前の場所のマジックと何らかの形で干渉するようです。

答え1

次のようにネストされたロケーション ロジックを使用できます。

location / {
  deny all;
  location ~* "\.(html|php)$" {
    Allow all;
  }
}

答え2

正規表現の場所も順序によって一致します。したがって、次のようなものも使用できます。

location ~* "\.(html|php)$" { ...; break; } location ~* "." { deny all; }

2 番目の場所も正規表現ベースである必要があることに注意してください。

関連情報