ПРОЕКТЫ 


  АРХИВ 


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 req zone



On Friday 22 March 2013 00:51:47 cat wrote:
> Приветствую.
> Пусть есть простой запрос:
> 
> http://127.0.0.1/api?username=testuser
> 
> Хочу ограничивать кол-во cоединений в единицу времени в зависимости от
> имени пользователя в параметре: кому-то разрешить больше запросов, кому-то
> меньше. В идеале это выглядело бы как-то так:
> 
> ###
> map $arg_username $limits {
>     bob 100;
>     alice 300;
>     default 10;
> }
> 
> limit_req_zone $limits zone=per_user_limit:10m rate=$limitsr/s;
> ###
> 
> Если бы не ошибка:
> 
> 2013/03/21 22:34:25 [emerg] 17212#0: invalid rate "rate=$limitsr/m" in
> /etc/nginx/nginx.conf:44
> 
> Есть ли способ выставлять rate для limit_req_zone динамически?
> 

Иными словами вы хотите описать несколько зон с разным rate. Да, конечно
это возможно:

  map $arg_username $is_bob {
      bob 1;
  }

  map $arg_username $is_alice {
      alice 1;
  }

  map $arg_username $is_default {
      dafault 1;
      bob     "";
      alice   "";
  }

  limit_req_zone $is_bob zone=user_bob:32k rate=100r/s;
  limit_req_zone $is_alice zone=user_alice:32k rate=300r/s;
  limit_req_zone $is_default zone=default_limit:32k rate=10r/s;

  location / {
      limit_req zone=default_limit;
      limit_req zone=user_bob;
      limit_req zone=user_alice;
  }

--
Валентин Бартенев
http://nginx.org/en/donation.html
_______________________________________________
nginx-ru mailing list
nginx-ru@xxxxxxxxx
http://mailman.nginx.org/mailman/listinfo/nginx-ru


 




Copyright © Lexa Software, 1996-2009.