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