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