Как составить правило для NGIX для страницы с параметром?

Стоит следующая задача - есть сайт на Wordpress с включенным кешем. На него постоянно долбится кто то на самую тяжелую страницу с запросом вида /slow-page?workaround=time(). Поскольку страницы в кэше нет, то генерируется новая, что сильно нагружает сервак. Я добавил такое правило в
location / {
    if ( $args ~ "workaround=" ) { return 404; }
}


Но данное правило не совсем универсальное, поскольку человек сможет поменять параметр и мне придется его менять. Я хочу поступить иначе - отдавать 404 ошибку, если идет запрос с любым запросом в query_string, кроме запроса поиска вида /?s=*, поскольку поиск у меня реализован через Elastic мимо MySQL. Т.е фактически мне надо понять, что человек зашел на главную (избежать конструкции типа /page/?s=*) и у него в query_string параметр s=.

Не совсем понимаю, как это реализовать
  • Вопрос задан
  • 33 просмотра
Пригласить эксперта
Ответы на вопрос 1
@dodo512
if ($request_uri ~ "^/(?!\?s=).*\?") {
    return 404;
}
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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