Re: борьба с ботами средствами nginx
Монашёв Михаил
postmaster at softsearch.ru
Mon Mar 16 16:57:18 MSK 2009
Здравствуйте, Роман.
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/
Без бэкапа по жизни.
More information about the nginx-ru
mailing list