nginx: регулярное выражение, сопоставляющее не равно?

nginx: регулярное выражение, сопоставляющее не равно?

есть ли эквивалент "не" для совпадений nginx? Я думаю

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

чтобы разрешить обслуживание только файлов HTML и PHP. Альтернативой является «deny all» с последующим ~ и «allow all». Увы, это, похоже, каким-то образом мешает какой-то более ранней магии местоположения в моем файле nginx.

решение1

Вы можете использовать вложенную логику местоположения следующим образом:

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

решение2

Регулярно выраженные местоположения также соответствуют порядку. Так что вы также можете использовать что-то вроде этого:

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

Обратите внимание, что второе местоположение также должно быть основано на регулярном выражении.

Связанный контент