ПРОЕКТЫ 


  АРХИВ 


Apache-Talk @lexa.ru 

Inet-Admins @info.east.ru 

Filmscanners @halftone.co.uk 

Security-alerts @yandex-team.ru 

nginx-ru @sysoev.ru 


  СТАТЬИ 


  ПЕРСОНАЛЬНОЕ 


  ПРОГРАММЫ 



ПИШИТЕ
ПИСЬМА












     АРХИВ :: nginx-ru
Nginx-ru mailing list archive (nginx-ru@sysoev.ru)

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Торможение ботов через limit_req



On Sunday 13 January 2013 04:55:16 Михаил Монашёв wrote:
> Здравствуйте.
> 
> Захотелось тут ограничить количество запросов, приходящих от ботов.
> Написал вот так:
> 
>         map $http_user_agent $rpm {
>                 default 999999;
>                 ~bot    1;
>         }
> 
>         limit_req_zone $binary_remote_addr zone=one:10m rate=$rpm r/s;
> 
> Но оказалось: invalid number of arguments in "limit_req_zone" directive
> 
> Ошибку осознал. Переписал вот так:
> 
>         map $http_user_agent $ua_zone {
>                 default notbot;
>                 ~bot    bot;
>         }
> 
>         limit_req_zone $http_user_agent zone=bot:10m rate=1r/s;
>         limit_req_zone $http_user_agent zone=notbot:10m rate=999999r/s;
>         limit_req zone=$ua_zone burst=120;

Это называется - перемудрить. =)

> 
> Выдало:unknown limit_req_zone "$ua_zone"
> 
> Пришлось пока применить старый, но не совсем мне подходящий способ:
> if ($http_user_agent ~ "bot"){
>     set $limit_rate  1000;
> }
> 
> Подскажите   пожалуйста,  как  ограничить  количество  запросов  через
> limit_req для юзерагентов, для которых матчится регэксп?


        map $http_user_agent $bot_ua {
                ~bot    bot;
        }

        limit_req_zone $bot_ua zone=bot:10m rate=1r/s;
  
        limit_req zone=bot burst=120;

--
Валентин Бартенев
http://nginx.com/support.html
http://nginx.org/en/donation.html
_______________________________________________
nginx-ru mailing list
nginx-ru@xxxxxxxxx
http://mailman.nginx.org/mailman/listinfo/nginx-ru


 




Copyright © Lexa Software, 1996-2009.