ПРОЕКТЫ 


  АРХИВ 


Apache-Talk @lexa.ru 

Inet-Admins @info.east.ru 

Filmscanners @halftone.co.uk 

Security-alerts @yandex-team.ru 

nginx-ru @sysoev.ru 


  СТАТЬИ 


  ПЕРСОНАЛЬНОЕ 


  ПРОГРАММЫ 



ПИШИТЕ
ПИСЬМА












     АРХИВ :: nginx-ru
Nginx-ru mailing list archive (nginx-ru@sysoev.ru)

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: limit_conn



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@xxxxxxxxxxxxxxx





 




Copyright © Lexa Software, 1996-2009.