ПРОЕКТЫ 


  АРХИВ 


Apache-Talk @lexa.ru 

Inet-Admins @info.east.ru 

Filmscanners @halftone.co.uk 

Security-alerts @yandex-team.ru 

nginx-ru @sysoev.ru 


  СТАТЬИ 


  ПЕРСОНАЛЬНОЕ 


  ПРОГРАММЫ 



ПИШИТЕ
ПИСЬМА












     АРХИВ :: nginx-ru
Nginx-ru mailing list archive (nginx-ru@sysoev.ru)

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

limit_req - feature request?


  • To: nginx-ru@xxxxxxxxx
  • Subject: limit_req - feature request?
  • From: "vgoncharov" <nginx-forum@xxxxxxxx>
  • Date: Fri, 18 Jun 2010 10:06:50 -0400
  • Dkim-signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=mickey.jlkhosting.com; s=x; h=Sender:From:Message-ID:Content-Transfer-Encoding:Content-Type:Subject:To:Date; bh=IRK2pLvg68ainaJVmg0fR9g1HdDIeaBwXNQy+yOcarI=; b=BQOVBvZpL66x42uaJ+e93kmtPsLPhQ7iwunSvBfka7zm9j1Qv6jGGpRrOTooldRsqE1SP60L34LVIOM6KIRBPyizhALlRSKdg4UBjPKsoPjDHon/gDvPoTtJFBerPl/t;

Добрый день!

Недавно мне тут на форуме понятно
объяснили как работает limit_req_zone
http://forum.nginx.org/read.php?21,92320,92320#msg-92320

Теперь непонятно как это применять.

Меня напрягают боты, которые сканируют
*.php на различные уязвимости.
С ними у меня хорошо справляется fail2ban.
Но он смотрит логи только 1 раз в
секунду, а сервер быстрый, конал
толстый, 50 плохих запросов такие боты
легко могут пропихнуть перед тем как их
заблокирует fail2ban.

У меня генерируется html со ссылками на
картинки . 

Ну поставил на location "/" ограничение 1r/s с
burst 20 и nodelay. Это уже бестолково, так как
20 запросов за первую секунду пролазят
легко. Или 21?

Но тут выяснилось, что на странице
может располагаться до 500 картинок.
Писать burst 500? А зачем тогда такое
ограничение нужно?

Правильно ли я понял, что для разумного
использования этого ограничения мне
мало написать
location / {
  proxy_pass ...;
  ...
  ...много всяких параметров...
  ...
}

Сейчас мне нужно описывать много
вссяких location, повторять в каждом
"...много всяких параметров..." и так
делать индевидуально для всего
имеющегося зоопарка серверов, чтобы
уже в каждом location указывать разные
ограничения. Это слишком муторно.

Можно ли сказать, чтобы какие-то
запросы не учитывались при подсчете
скорости? Например "Не считать запросы,
на которые ответ с Content-Type: image/*"

Или наоборот, считать только те
запросы, у которых URI содержит \.php

Как-то можно это сделать не выделяя
кучу location'ов и указанием "этот location не
ограничиваем", "этот location ограничиваем
так-то"?

Самое удобное было бы, чтобы я смог
прописать в секции http что-то такое:

http {
  # ограничим тяжелые php и cgi скрипты
  limit_req_zone $binary_remote_addr zone=slow:10m rate=4r/s;
  limit_req zone=slow burst=2 nodelay "\.php";
  limit_req zone=slow burst=2 nodelay "\.cgi";

  # ограничим все остальное
  limit_req_zone $binary_remote_addr zone=fast:10m rate=10r/s;
  limit_req zone=fast burst=100 nodelay "\.";

server (
  ...
)
server (
  ...
)
... много других серверов ...
}

Posted at Nginx Forum: http://forum.nginx.org/read.php?21,99889,99889#msg-99889


_______________________________________________
nginx-ru mailing list
nginx-ru@xxxxxxxxx
http://nginx.org/mailman/listinfo/nginx-ru


 




Copyright © Lexa Software, 1996-2009.