В 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