@theodorheia

Как в nginx отбросить запросы по URL, которые содержат в себе get метод?

Задача - отбросить все запросы по конкретному урлу.
url следующий - "/blablabla/bla?x=55&y=="
Вроде всё просто, создаю локейшн и deny all:
location = /blablabla/bla?x=55&y== {deny all;}
Далее проверяю курлом:
curl -I 'localhost/blablabla/bla?x=55&y=='
Получаю 404, хотя должен получать 403.
Также если вместо deny all поставить return 200 - всё равно получаю 404.

Знаю, что можно сделать так:
location ~ /blablabla/bla {
if ( $args ~ ^x=55&y== ) { return 403; }
}
Но при высоких нагрузках условный оператор может отнимать много CPU.

Может я в синтаксисе ошибаюсь?
Или единственный вариант - второй метод?

Спасибо за помощь.
  • Вопрос задан
  • 129 просмотров
Пригласить эксперта
Ответы на вопрос 1
Lynn
@Lynn
nginx, js, css
Второй метод. query-параметры никогда не матчатся в location.

> Но при высоких нагрузках условный оператор может отнимать много CPU.
Я сильно сомневаюсь что у вас такие высокие нагрузки, что бы это было заметно.

Ну и в if можно использовать простое сравнение, а не регулярку.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы