Назад | Перейти на главную страницу

ограничение скорости nginx в зависимости от местоположения и заголовка сообщения

В Nginx есть полезный модуль под названием ngx_http_limit_req_module где вы можете ограничить запросы к серверу на основе IP или количества запросов.

Можно ли вообще ограничить рейтинг местоположения, которое включает настраиваемый заголовок? например Я пробовал это, но не запускается nginx.

location /myservice {
    if ($http_x_custom_header) {
      limit_req zone=one burst=5;
    }
}

Конкретная ошибка:

nginx: [Emerg] директива limit_req недопустима в / etc / nginx / sites-enabled / default

т.е. ему не нравится директива limi_req внутри if блок. Это нормально вне блока if.

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

Ты прав, limit_req не может использоваться на этом уровне.

Способ обойти это следующим образом.

error_page 418 = @limitreq;

location /myservice {
    if ($http_x_custom_header) {
      return 418;
    }
}

location @limitreq {
    limit_req zone=one burst=5;
    <rest of config>
    }

Это вернет 418 если присутствует custom_header, который nginx перехватит и отправит в настраиваемый блок местоположения, который применит limit_req