Re: Переменная для zone в limit_req_zone

Maxim Dounin mdounin на mdounin.ru
Ср Сен 23 14:55:56 UTC 2015


Hello!

On Wed, Sep 23, 2015 at 05:19:38PM +0300, Горан Петрыч wrote:

> Добрый день,
> 
> Хотелось бы, чтобы "zone" в limit_req_zone можно было объявить динамически. На
> сервере много виртуальных хостов, которые подхватываются конфигом nginx
> автоматически (то есть явно не прописываются). Хотелось бы как-то так:
> limit_req_zone
> $binary_remote_addr zone=$hostname:10m rate=5r/s; В location / limit_req
> zone=$hostname burst=5; Но zone переменные воспринимает как просто
> строку. Задача:
> лимитировать каждый виртуальный хост отдельно, не перечисляя явно зоны для
> каждого виртуального хоста.

Используйте составной ключ в одной зоне:

    limit_req_zone $hostname$binary_remote_addr zone=limit:10m rate=5r/s;

Возможность использовать строку с несколькими переменными есть в 
nginx 1.7.6+.  В более старых версиях - следует отдельно создать 
переменную, в которую положить нужное.

    limit_req_zone $hostname_and_binary_remote_addr zone=limit:10m rate=5r/s;

    server {
        ...

        set $hostname_and_binary_remote_addr $hostname$binary_remote_addr;

        ...
    }

-- 
Maxim Dounin
http://nginx.org/



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