Перейти к публикации

Рекомендованные сообщения

Паразиты намерено долбят страницы результата поиска, тем самым загружают мне CPU на сервере.

Кто знает как правильно составить ограничение на количество запросов для параметров URL в локейшенах:

site.com/index.php?story=слово&do=search&subaction=search
site.com/index.php?do=search&subaction=search&search_start=2&full_search=0&story=слово

тоесть для /index.php?story и /index.php?do=search

 

Один общий limit_req на весь сайт стоит и нормально работает, но необходимо еще отдельно с другими лимитами сделать для поиска. Всю голову поломал никак не получается для параметров URL задать. 

Пробовал и путем создания map с  условиями:
 

if ($args ~ ^story=){
limit_req zone=search_zone burst=5 nodelay;
}

Но оказывается limit_req внутри if конструкции не поддерживается.

Пробовал и с регулярным выражением в локейшене

http {
    limit_req_zone $binary_remote_addr zone=search_zone:10m rate=1r/s;
}

location ~* /index\.php.*(\?|&)story= {
limit_req zone=search_zone burst=5 nodelay;
}

Но тоже безрезультатно, не хочет работать. Либо я плохо разбираюсь в этом деле. Может у кого был опыт, поделитесь мыслью или готовой наработкой. Наверняка кто-то тоже сталкивался с таким нюансом. Поисковые страницы реально самое слабое место. К слову, банить адреса флудеров тоже бесполезно, у них динамика, либо прокси. А лимиты покрайней мере будут значительно экономить ресурсы сервера.

Изменено пользователем sergoxa
Ссылка на сообщение
Поделиться на других сайтах

Используйте fail2ban и по логам сервера смотрите кто в определенный промежуток времени часто искал того сразу в бан сервера на несколько часов, это намного эффективнее limit_req

Ссылка на сообщение
Поделиться на других сайтах

Создайте аккаунт или войдите в него для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!

Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас
×
×
  • Создать...