Зачем нужно ограничение скорости?
Ограничение скорости – это простой способ остановить пользователей (надеюсь, только плохих!) от доступа к большему количеству ресурсов вашего сайта, чем вам хотелось бы.
Как написано на оф. сайте Nginx:
Модуль
ngx_http_limit_req_module
(0.7.21) позволяет ограничить скорость обработки запросов по заданному ключу или, как частный случай, скорость обработки запросов, поступающих с одного IP-адреса. Ограничение обеспечивается с помощью метода “leaky bucket”.
Далее показан простой способ ограничения скорости доступа к определенным URL с помощью Nginx.
Как добавить ограничение скорости в nginx
В верхней части файла nginx вы можете определить параметры следующим образом:
limit_req_zone $binary_remote_addr_map zone=mylimit:10m rate=5r/s;
limit_req_status 429;
map $request_uri $binary_remote_addr_map {
default "";
~^/what-is-new.html $binary_remote_addr;
~^/another-url-to-rate-limit.html $binary_remote_addr;
}
Затем в блоке location добавьте:
limit_req zone=mylimit;
Теперь ограничение скорости будет применяться только к веб-страницам, соответствующим $request_uri.
Это удобно, когда все ваши запросы направляются через один эндпойт, но вы хотите ограничить скорость только определенных страниц на вашем сайте.
см. также: