limit_req_zone, переменный rate

Sergej Kandyla sk.paix на gmail.com
Чт Мар 11 15:07:09 MSK 2010


Господа,  пытаюсь передать в limit_req_zone  rate в качестве переменной.
nginx/0.8.34
centos5.4 i386

тест конфига проходит вполне успешно

http {
       limit_req_zone $binary_remote_addr zone=one:10m $rate;
        ..

server {
       location / {
                limit_req zone=one ;
                set $rate "rate=3r/s";
                proxy_pass              ....;


но на деле оказывается какая-то фигня,  пробовал выставлять различные 
значения, например  "rate=1r/m" - какие-то запросы проходят, какие-то нет,
в логе примерно такое:

2010/03/11 13:55:21 [error] 12212#0: *20 limiting requests, excess: 
0.000 by zone "one", client: XXX, server: XXX, request: "GET /?p=10 
HTTP/1.1", host: "XXX", referrer: "http://XXX/?p=1"

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

Что делаю не так? куда копать?

PS. вся эта затея нужна для того чтобы по различным критериям выставлять 
различный limit_req в пределах заданного сервера. В конкретном случае - 
для различных айпи делать различные limit_req.



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