ПРОЕКТЫ 


  АРХИВ 


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: переменные из map в виде имени limit req



Hello!

On Fri, May 18, 2012 at 08:15:15AM -0400, jch wrote:

> Привет!
> 
> Есть задача - скрипты с одним
> юзер-агентом лимитировать по
> количеству запросов так, а с другим -
> этак
> Написал такую конфигурацию:
> 
>     map  $http_user_agent $zone {
>         default         2;
>         "Script-Cool s329fj3d1jc"           10;
>         "Script-Hot ASFcqin123"            5;
>     }
> 
>     limit_req_zone  $binary_remote_addr  zone=2:10m   rate=2r/m;
>     limit_req_zone  $binary_remote_addr  zone=10:10m   rate=10r/m;
>     limit_req_zone  $binary_remote_addr  zone=5:10m   rate=5r/m;
> 
>     location /api/ {
>              limit_req   zone=$zone  burst=3 nodelay;
>              proxy_pass http://127.0.0.1:8100;
>     }
> 
> Ругается:
> nginx: [emerg] unknown limit_req_zone "$zone" in /etc/nginx/nginx.conf
> внутри if limit_req не работает.
> Получается совсем грустно.

Должно сработать как-то так:

    map $http_user_agent $limit2 {
        default     $binary_remote_addr;
        "cool"      "";
        "hot"       "";
    }

    map $http_user_agent $limit10 {
        default     "";
        "cool"      $binary_remote_addr;
    }

    limit_req_zone $limit2 zone=2:10m rate=2r/m;
    limit_req_zone $limit10 zone=10:10m rate=2r/m;
    
    location /api/ {
        limit_req zone=2 burst=3 nodelay;
        limit_req zone=10 burst=3 nodelay;
        ...
    }

Maxim Dounin

_______________________________________________
nginx-ru mailing list
nginx-ru@xxxxxxxxx
http://mailman.nginx.org/mailman/listinfo/nginx-ru


 




Copyright © Lexa Software, 1996-2009.