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

Roman Hlynovskiy roman.hlynovskiy at gmail.com
Mon Mar 16 19:07:01 MSK 2009


добрый вечер,

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

если я могу повлиять на то кто должен первым получить запрошенный
ресурс - обычный пользователь или бот, то я выберу первого, т.к.
второй имеет имеет свои собственные механизмы индексации и может
придти позже, а пользователь который открывает страничку рассчитывает
ее получить здесь и сейчас.

16 марта 2009 г. 19:50 пользователь Nikolay Grebnev <nick at algen.spb.ru> написал:
> Мне кажется что это некорректная постановка задачи.
> Роботы - это кормильцы. Резать их неправильно.
> Вам надо решать задачу с другой стороны - надо чтобы клиент имел некую
> планку по загрузке системы, и в ней уже мог извращаться как ему угодно. Если
> совсем никак то проще отказаться от клиента. Это и для него лучше.
> Уверен, что он заплатил за раскрутку( чтобы пришли роботы) во много десятков
> раз больше, чем за Ваш хостинг. И если Вы будете его резать, это неправильно
>
> 2009/3/16 Roman Hlynovskiy <roman.hlynovskiy at gmail.com>
>>
>> добрый день,
>>
>> а у кого какой опыт есть борьбы с поисковыми ботами средствами 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-а.
>> какие варианты тут могуть быть?
>>
>> реализовывал-ли кто-нибудь что-нибудь подобное первому варианту?
>> у меня вообще не приходят мысли как может выглядеть подобная конфигурация.
>>
>>
>> --
>> ...WBR, Roman Hlynovskiy
>
>



-- 
...WBR, Roman Hlynovskiy


More information about the nginx-ru mailing list