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