limit_conn

Maxim Dounin mdounin at mdounin.ru
Thu Aug 14 12:53:46 MSD 2008


Hello!

On Thu, Aug 14, 2008 at 11:32:56AM +0300, Vadim Pronin wrote:

>Hello Maxim,
>
>Wednesday, August 13, 2008, 5:49:56 PM, you wrote:
>
>>>подскажите пожалуйста как правильно прописать в конфиге ограничение на
>>>количество соединений с одного IP таким образом чтобы для одних IP
>>>было одно ограничение, для других - другое.
>>>
>>>В моем случае есть сервер раздающий большие файлы.
>>>Нужно чтобы все пользователи могли качать в 3 потока, а пользователи с
>>>определенных IP - без ограничений (ну или в 100 потоков).
>>>
>>>Я уже отделил нужных пользователей через geo:
>>>
>>>limit_zone one $binary_remote_addr 10m;
>>>
>>>geo $userlimit {
>>> default      3;
>>> x.x.x.x/32   100;
>>>}
>>>
>>>что с этим делать дальше?
>>>
>>>limit_conn one $userlimit; - не работает (не воспринимает $userlimit
>>>как значение)
>>>
>>>if ($userlimit = '3')
>>>{
>>> limit_conn one 3;
>>>}
>>>
>>>тоже не работает т.к. limit_conn не может быть внутри IF..
>>>
>>>Как правильно все это прописать???
>
>> Совсем тупой вариант - rewrite в другой location и другой 
>> limit_conn уже там. 
>
>Пытался...
>
>допустим есть
>
>location / {
>root /data
> if ($userlimit = '100')
>  {
>   rewrite ^(.*)$ /unlimit/$1 last;
>  }
>limit_conn 3
>}
>
>location /unlimit {
>root /data
>limit_conn 100
>}
>
>Получается что если обычный юзер просит файл http://server/file.ext то
>ему нормально отдается /data/file.ext
>Но если "безлимитный" юзер просит тот же файл, nginx пытается уже
>найти файл /data/unlimit/file.ext не смотря на то что root для
>локейшена /unlimit прописан такой же как для /

Root прописан такой же, а url - другой.  Читать про alias.

Maxim Dounin

>Попытки использовать named location (@) тоже особо ни к чему не привели..
>Возможно потому что я не до конца понимаю в чем их суть (они
>практически не документированы), а возможно потому что они
>предназначены для чего-то другого...
>
>В любом случае, проблема остается...
>
>-- 
>Best regards,
> Vadim                            mailto:nginx at mail.pronin.com
>
>





More information about the nginx-ru mailing list