Модуль ngx_http_limit_req_module (0.7.21) позволяет ограничить число запросов по заданному ключу или, как частный случай, число запросов с одного IP-адреса.
limit_req_zone $binary_remote_addr zone=one:10m rate=5r/s;
location / {
...
limit_req zone=one burst=10;
}
burst в данном случае это превышение "над" лимитом, то есть
http://nginx.org/ru/docs/http/ngx_http_limit_req_module.html
Также нужно ограничивать подключения с 1 айпи во много потоков, это делается через другой модуль: ngx_http_limit_conn_module
limit_zone zone_name $binary_remote_addr 10m;
server {
location / {
limit_conn zone_name 8; <-- number of connections per IP
}
}
Скорость:
if ($slow) {
set $limit_rate 4k;
ngx_http_core_module.html#limit_rate
А также limit_rate_after
Такие вещи как: limit_zone zone_name $binary_remote_addr 10m;
limit_req_zone $binary_remote_addr zone=one:10m rate=5r/s;
можно устанавливать как в блоке server, так и глобально в http. Как я понимаю, также имеет значение имя этих переменных, если больше 1 проекта.
А если у меня много хостов. К каждому свой ключ делать?
ОтветитьУдалитьможно свой ключ, тогда будет для каждого сайта свой набор. Можно 1 ключ на все сайты. Но прописывать для каждого сайта надо, так нгинх устроен, в глобале не определить.
ОтветитьУдалить