Местоположение nginx запрещает расширение файла, запрещенное регулярным выражением - PullRequest
1 голос
/ 30 октября 2019

Вкл. nginx Я пытаюсь разрешить только некоторые расширения и запретить все остальные , такие как gif, zip, exe, php для данного поддерева.

Я бы хотел использовать регулярное выражение для определения разрешенных расширений.

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

location /wp-content/userimages/ {
  location ~* (\.(?!(jpg|png|jpeg)))$ {
    deny all;;
  }
}

1 Ответ

1 голос
/ 30 октября 2019

Регулярное выражение (\.(?!(jpg|png|jpeg)))$ соответствует . в конце ввода, поскольку между \. и $ не существует шаблона потребления. Вам нужно добавить шаблон потребления для расширения, например, [^.]+, который соответствует любым 1+ символам, кроме .:

\.(?!(png|jpe?g)$)[^.]+$

Примечание. Я сжал jpeg|jpg в jpe?g и добавилпроверка конца строки в заголовке так, чтобы расширения, начинающиеся с запрещенных расширений (например, png2 (если вы когда-либо сталкивались с ним)), могли совпадать, а png - не могли.

...