Re: борьба с ботами средствами nginx

Roman Hlynovskiy roman.hlynovskiy at gmail.com
Mon Mar 16 20:54:19 MSK 2009


А не даст ли данный подход абсолютно противоположный эффект?
ведь limit_rate ограничивает скорость отдачи, а не количество процессов.
т.е. не начнет-ли crawler поисковика закидывать сайт повторными
запросами если не дождался ответа при большом объеме запрашиваемой
странички?
я просто не совсем точно представляют как себя в ведут поисковики в
настоящее время.

16 марта 2009 г. 19:57 пользователь Монашёв Михаил
<postmaster at softsearch.ru> написал:
> Здравствуйте, Роман.
>
> if ($http_user_agent ~ "Yandex|Google|Rambler|Yahoo|msn|Ask|baidu|YaDirectBot|Twiceler"){
>    set $limit_rate  1000;
> }
>
>
>> добрый день,
>
>> а у кого какой опыт есть борьбы с поисковыми ботами средствами nginx?
>
>> сегодня столкнулись с интересной проблемой - дурной клиент то-ли купил
>> сервис по seo-оптимизации, то-ли сам где-то научился, но его ресурс
>> обступили вкруговую поисковые боты.
>> одновременно 10-15 разных поисковых ботов начали активно индексировать
>> ресурс. все-бы ничего, но ресурс поднят на базе одного очень дурного
>> CMS разработчики которого видимо не в курсе что существуют понятия
>> индексов в БД.
>> в итоге получился небольшой DOS. сервер выдержал, но 'осадок' остался,
>> в виде очень нехороших iowait'ов.
>
>> хотел-бы узнать кто-как решает подобные наплывы ботов у себя?
>> закрывать полностью ip-адреса ботов тоже не вариант, т.к. речь идет о
>> шаред хостинге.
>
>> соответственно у меня возникло 2 различные идеи воплощения этой задачи;
>
>> 1) разрешить только одному боту в одну единицу времени получать свой
>> честный 200, всем остальным - 503
>> 2) разрешить не более одного коннекта с одного ip-адреса при условии
>> что user_agent соответствует некому набору бот-шаблонов.
>
>> попытался реализовать второй вариант через limit_conn следующим образом:
>
>> http {
>>     limit_zone   bots  $binary_remote_addr  16m;
>
>>    . . .
>
>>    server {
>
>>     if ($http_user_agent ~* "StackRambler|Yandex") {
>>     limit_conn bots 1;
>>    }
>
>
>>   }
>
>> }
>
>> на практике получил облом, т.к. limit_conn не может быть внутри if-а.
>> какие варианты тут могуть быть?
>
>> реализовывал-ли кто-нибудь что-нибудь подобное первому варианту?
>> у меня вообще не приходят мысли как может выглядеть подобная конфигурация.
>
>
>
>
>
> --
> С уважением,
> Монашёв Михаил, SoftSearch.ru
> mailto:postmaster at softsearch.ru
> ICQ# 166233339
> http://michael.mindmix.ru/
> Без бэкапа по жизни.
>
>
>



-- 
...WBR, Roman Hlynovskiy


More information about the nginx-ru mailing list