2009/10/26 Igor Sysoev <is@rambler-co.ru>:
> On Mon, Oct 26, 2009 at 06:16:19AM -0400, webscripter wrote:
>
>> Хочу ограничить кол-во сессий в секунду, но не для всех адресов. Есть список белых заданных с помощью директивы geo через переменную $white. А как ее подставить в конфиг для location / пока не понял. Помогите плиз.
>
> Пока никак. У меня был идея сделать как-то так:
>
> limit_req_zone $... zone=BOTS:10m rate=1r/s;
> limit_req_zone $... zone=GOOD:10m rate=5r/s;
>
> geo $limit {
> default 1;
>
> # while list
> 192.168.1.0/24 0;
> 192.168.10.0/24 0;
> }
>
> server {
>
> limit_req zone=BOTS burst=1 if $limit;
> limit_req zone=GOOD burst=20 if $limit;
> limit_req off;
>
> или
>
> geo $while {
> default 0;
>
> 192.168.1.0/24 1;
> 192.168.10.0/24 1;
> }
>
> server {
>
> limit_req off if $white;
> limit_req zone=GOOD burst=20;
> limit_req zone=BOTS burst=1;
>
>
>
> Но тут есть вопросы - как должны срабатывать правила: по первому
> соотвествию if или нет. Если есть несколько правил без if - проверять
> все или нет ?
>
>
> --
> Игорь Сысоев
> http://sysoev.ru
>
>
Предложение.
limit_req zone=_FOO burst=$limit;