Re: limit_req и белый список

Alex, the Marrch Ca'at marrch.caat at gmail.com
Sat Sep 19 03:35:51 MSD 2009


В if-е делать сброс на специальный именованный локейшен, в котором уде
и прописать нужный limit_req?

2009/9/19 Sergey Novikov <snov at aha.ru>:
> Здравствуйте.
>
> Хочется выборочно использовать 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