Я смотрю на ограничение скорости с помощью HttpLimitReqModule от nginx . Однако все запросы поступают с одного IP-адреса (балансировщик нагрузки) с реальным IP-адресом в заголовках.
Есть ли способ иметь ограничение скорости nginx на основе ip в X-Forwarded-For
заголовке вместо ip источника?
nginx
rate-limiting
Джон Броди
источник
источник
$binary_remote_addr
переменная будет установлена правильно.limit_req_zone
Директива определяет переменную , которая будет использоваться в качестве ключа для запроса группировки.Обычно
$binary_remote_addr
используется, а не$remote_addr
потому, что он меньше и экономит место.Возможно, вы хотите использовать RealipModule .
Это перезапишет переменные удаленного адреса по адресу, указанному в пользовательском заголовке, а также облегчит ведение журналов и других переменных.
источник
$binary_remote_addr
и$remote_addr
обычно задается значение вашего настроенного заголовка,X-Forwarded-For
поэтому ваши стандартные переменные теперь являются «реальным IP-адресом клиента». Запустите,nginx -V
чтобы увидеть, был ли построен NGINX--with-http_realip
. Тогда конфигурация так же проста, как:,set_real_ip_from 10.0.0.0/8;
real_ip_header X-Forwarded-For;
где диапазон CIDR - это диапазон вашего восходящего балансировщика нагрузки, который устанавливаетX-Forwarder-For
заголовок.