Re: Работает ли переменная $upstream addr директиве limit req zone?
Maxim Dounin
mdounin на mdounin.ru
Вт Окт 18 13:37:19 UTC 2016
Hello!
On Tue, Oct 18, 2016 at 08:23:01AM -0400, nerjin wrote:
> Хотелось ограничивать скорость запросов на каждый upstream. Пытался сделать
> вот так:
>
> limit_req_zone $upstream_addr zone=low_speed:10m rate=1r/s;
>
> Но скорость так не ограничивалась.
>
> Вопрос: работает ли тут переменная $upstream_addr и если нет, то как можно
> такое ограничение реализовать?
Так работать не будет, т.к. $upstream_addr - это переменная, в
которой содержатся адреса выбранных для работы бекендов, и
какое-либо осмысленное значение в ней появляется только того, когда
бекенд выбран и запрос отправляется на него.
Если по какой-то причине хочется ограничивать именно частоту
запросов на конкретные бекенды - запросы надо разделить между
бекендами заранее, чтобы в момент работы limit_req было известно,
какой именно бекенд будет использован. Это можно сделать,
например, с помощью модуля split_clients, ну или совсем общий
вариант - с помощью дополнительного проксирования.
--
Maxim Dounin
http://nginx.org/
Подробная информация о списке рассылки nginx-ru