Назад | Перейти на главную страницу

Как записать исходное значение $ remote_addr при использовании Real-IP

В моей среде запросы пользователей проходят через несколько систем:

[Клиент] -> [ELB] ---> [nginx] -> [Интернет]

(ELB = AWS Elastic Load Balancer)

Благодаря этому ответ, У меня nginx определяет и передает правильный IP-адрес клиента вышестоящим серверам (в Интернете) с X-Forwarded-For и X-Real_IP заголовки. Соответствующий конфиг nginx:

    real_ip_header      X-Forwarded-For;
    set_real_ip_from        10.0.0.0/8;
    real_ip_recursive   on;
    proxy_set_header X-Real-IP $remote_addr;

Моя проблема в том, что модуль Real IP в nginx заменяет существующий $remote_addr переменная с результатом ее X-Forwarded-For расчеты. Это дает мне исходный IP-адрес клиента, но я теряю IP-адрес системы, которая фактически отправила запрос прокси-серверу (т.е. ELB).

В целом, для меня важнее иметь IP-адрес клиента, но я хотел бы иметь возможность регистрировать всю цепочку запросов, чтобы понимать (и отлаживать), как проходит трафик. В настоящее время у меня может быть только nginx для записи IP-адреса клиента, его собственного IP-адреса и IP-адреса вышестоящего сервера. Я также хотел бы иметь возможность регистрировать IP-адрес ELB.

я вижу X-Istence спросил то же самое вопрос в 2013 году не повезло. Что-нибудь изменилось или улучшилось с тех пор?

Вы можете получить исходный адрес клиента подключающегося ELB в переменная $realip_remote_addr, но имейте в виду, что эта переменная была добавлена ​​только в nginx 1.9.7, поэтому вам потребуется использовать самую последнюю версию nginx.