Re: limit req не для всех

webscripter nginx-forum at nginx.us
Mon Oct 26 14:34:09 MSK 2009


Igor Sysoev Пишет:
-------------------------------------------------------
> 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 на данном уровне конфига.

Posted at Nginx Forum: http://forum.nginx.org/read.php?21,16855,16867#msg-16867






More information about the nginx-ru mailing list