Re: Применение директивы для определенного IP адреса

maxpostal nginx-forum на forum.nginx.org
Пн Окт 17 20:24:17 UTC 2016


Иван, здравствуйте. Спасибо за помощь.

Здесь http://nginx.org/ru/docs/http/ngx_http_limit_req_module.html указана
директива:
limit_req_zone $binary_remote_addr zone=one:10m rate=1r/s;

$binary_remote_addr - это переменная nginx обозначающая ip-адрес клиента?

В итоге указанный мой ранее кусок конфига не работает, то есть модули
лимитов nginx не отрабатывают, а если изменить конфиг на:
# Настраиваем лимиты кроме ip адреса
map $http_x_forwarded_for $binary_remote_addr {
   15.267.98.155 1;
}
limit_req_zone $binary_remote_addr zone=perserver:10m rate=1r/s;
limit_conn_zone $binary_remote_addr zone=perip:10m;

То получаю ошибку:

-- Unit nginx.service has begun starting up.
Oct 17 23:17:41 domain.ru nginx[29398]: nginx: [emerg] the duplicate
"binary_remote_addr" variable in /etc/nginx/nginx.conf:39
Oct 17 23:17:41 domain.ru systemd[1]: nginx.service: control process exited,
code=exited status=1
Oct 17 23:17:41 domain.ru systemd[1]: Failed to start LSB: Stop/start
nginx.

Соответственно директивы:
limit_req_zone $binary_remote_addr zone=perserver:10m rate=1r/s;
limit_conn_zone $binary_remote_addr zone=perip:10m;

работают, а если указать $key:

limit_req_zone $key zone=perserver:10m rate=1r/s;
limit_conn_zone $key zone=perip:10m;

то лимиты не работают :(

Posted at Nginx Forum: https://forum.nginx.org/read.php?21,270039,270336#msg-270336



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