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

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

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

(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 году, но без особого успеха. Изменилось ли что-нибудь или улучшилось с тех пор?

9
задан 13 April 2017 в 15:14
1 ответ

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

.
8
ответ дан 2 December 2019 в 22:33

Теги

Похожие вопросы