limit_req и белый список
Sergey Novikov
snov at aha.ru
Sat Sep 19 01:49:44 MSD 2009
Здравствуйте.
Хочется выборочно использовать limit_req, но не для всех IP, так как
на некоторых одновременно может быть много пользователей (и много
запросов).
Придумал такую конструкцию:
http {
# Список адресов, для которых отвечаем без ограничений
geo $whitelist {
default no;
80.239.224.0/24 opera;
# и т.д.
}
limit_req_zone $binary_remote_addr zone=backend:10m rate=10r/s;
}
location /
{
if ($whitelist = no) {
limit_req zone=backend burst=20;
}
}
Не знаю, правильна ли эта конструкция с geo, но надеюсь моя мысль ясна
- для неизвестных ip
установить ограничение.
Проблема в том, что nginx сообщает:
# nginx -t
[emerg]: "limit_req" directive is not allowed here in ...
Если убрать if, то все в порядке, но теряется смысл списка.
limit_req zone=backend burst=$var; кажется, тоже не работает...
Придумать среднее значения для всех не получается.
Скажите, можно ли как-то это сделать?
More information about the nginx-ru
mailing list