Maxim Dounin
February 01, 2011 07:38AM
Hello!

On Tue, Feb 01, 2011 at 02:49:14PM +0300, Антон Исайкин wrote:

> Добрый день.
>
> Подскажите пожалуйста, верно ли я понимаю принцип работы директивы
> limit_req_zone. Мне необходимо ограничить число запросов в час для IP

Принцип работы описан тут:

http://en.wikipedia.org/wiki/Leaky_bucket

Ключевые моменты:

1. limit_req ограничивает скорость, а не количество запросов за
определённый период.

2. Максимально количество запросов, которые могут поступить от
клиента за произвольно короткий промежуток времени, и при этом
будут обслужены - задаётся параметром burst.

3. Если запросы поступают со скоростью большей, чем разрешено (но
в пределах burst), то в зависимости от параметра nodelay они будут
либо задерживаться до заданной скорости, либо нет.

> адреса (h для обозначения часа не поддерживается) в количестве 180
> запросов. При текущем синтаксисе мне надо написать что-то подобное:
>
> limit_req_zone $binary_remote_addr zone=one:10m rate=3r/m;
> ...
> limit_req zone=one burst=177;
>
> Эквивалентна ли такая запись требуемому условию?

При таком конфиге за час можно будет сделать максимум (3 r/m * 60
m) + 177 r = 357 запросов (в случае, если запросов в предыдущий
час не было). Если запросы поступают постоянно - то только 180.

При этом за произвольно короткий промежуток времени можно будет
сделать 177 запросов. Эти запросы будут обслуживаться по очереди
в течении 57 минут (скорее всего большей части ответов клиент не
дождётся).

Если вы хотите разрешить не более 180 запросов за час в среднем, и
при этом разрешить делать все эти запросы за произвольно короткий
промежуток времени, то пишите так:

limit_req_zone $binary_remote_addr zone=one:10m rate=3r/m;
limit_req zone=one burst=180 nodelay;

Если задачи резрешить делать все эти запросы за произвольно
короткий промежуток времени не стоит, то burst и nodelay можно
ставить из других соображений.

Maxim Dounin

_______________________________________________
nginx-ru mailing list
nginx-ru@nginx.org
http://nginx.org/mailman/listinfo/nginx-ru
Subject Author Posted

ngx_http_limit_req_module

Антон Исайкин February 01, 2011 06:50AM

Re: ngx_http_limit_req_module

Maxim Dounin February 01, 2011 07:38AM

Re: ngx_http_limit_req_module

minaev February 01, 2011 08:26AM

Re: ngx_http_limit_req_module

Maxim Dounin February 01, 2011 09:06AM



Sorry, only registered users may post in this forum.

Click here to login

Online Users

Guests: 239
Record Number of Users: 8 on April 13, 2023
Record Number of Guests: 421 on December 02, 2018
Powered by nginx      Powered by FreeBSD      PHP Powered      Powered by MariaDB      ipv6 ready