Nginx-ru mailing list archive (nginx-ru@sysoev.ru)
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re[2]: limit_conn
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 прописан такой же как для /
Попытки использовать named location (@) тоже особо ни к чему не привели..
Возможно потому что я не до конца понимаю в чем их суть (они
практически не документированы), а возможно потому что они
предназначены для чего-то другого...
В любом случае, проблема остается...
--
Best regards,
Vadim mailto:nginx@xxxxxxxxxxxxxxx
|