limit_req - feature request?
vgoncharov
nginx-forum на nginx.us
Пт Июн 18 18:06:50 MSD 2010
Добрый день!
Недавно мне тут на форуме понятно
объяснили как работает 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