Re: limit_conn в location несколько раз

Maxim Dounin mdounin на mdounin.ru
Пт Сен 30 12:35:00 UTC 2011


Hello!

On Fri, Sep 30, 2011 at 04:09:03PM +0400, Виктор Вислобоков wrote:

> Привет всем.
> 
> До этого пользовался nginx-0.6.x. Тут поставил nginx-1.0.6. В итоге
> стало ругаться вот на такое:
> 
>     limit_zone                          conn_from_one_ip
> $binary_remote_addr 64m;
>     limit_zone                          conn_for_one_client $host 48m;
> 
> ....
> 
>       location / {
>             limit_conn                  conn_from_one_ip 4;
>             limit_conn                  conn_for_one_client 8;
>             proxy_pass                  http://127.0.0.1;
>             proxy_redirect              off;
>         }
> nginx: [emerg] "limit_conn" directive is duplicate
> 
> В документации НЕ написано, что нельзя несколько раз limit_conn. В
> changelog не написано, когда поведение nginx изменилось, что он
> перестал воспринимать более одной директивы. Разумеется если убрать
> одну любую - работает без проблем.
> 
> Итак два вопроса:
> 1. Можно или нельзя всё-таки более одного limit_conn?

Сейчас - нельзя.

> 2. Если нельзя, то почему и нельзя ли вернуть как было, потому что
> реально нужно.

Было - так же, но ошибки не выдавалось.  Работала какая-то одна, 
если мне не изменяет память - последняя.

> 3. Если нельзя и вернуть нельзя, то как выходить из ситуации?

По хорошему - надо сесть и сделать поддержку нескольких 
limit_conn.  Для limit_conn это просто (для limit_req - 
нетривиальнее, там та же самая проблема).

> 4. Если нельзя, то почему ничего нет на эту тему в документации?

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

Maxim Dounin



Подробная информация о списке рассылки nginx-ru