Nginx's модуль real_ip позволяет установить $remote_addr
переменная на основе значений, отправленных в определенных полях заголовка. У него особое понимание X-Forwarded-For
заголовок и может использовать самое правое ненадежное значение в заголовке в качестве подключаемого IP-адреса.
Я хотел бы использовать модуль real_ip для установки $remote_addr
на подключающийся IP-адрес. У меня проблема в том, что я знаю, сколько прыжков назад с конца X-Forwarded-For
посмотреть, но не IP-адреса прокси между ними. Насколько я понимаю, это означает, что я не могу использовать set_real_ip_from
для указания IP-адреса прокси.
Что я хотел бы сделать, так это настроить nginx для выбора предпоследнего адреса в списке в качестве $remote_addr
. Кажется, что модуль real_ip работает только в том случае, если у вас есть инфраструктура, в которой вы знаете IP-адреса своих прокси.
Есть ли способ сделать это с помощью модуля real_ip? Я разработал решение на основе регулярных выражений, но я бы предпочел использовать модуль real_ip, если это возможно.
Я не думаю, что это обман nginx real_ip_header и X-Forwarded-For кажется неправильным или подобные вопросы. Чтобы сформулировать проблему еще раз:
set_real_ip_from
.Подробнее о специфике:
Я запускаю nginx внутри Google Cloud, за балансировщиком нагрузки HTTP Google Cloud. Google Cloud использует в X-Forwarded-For
заголовок, чтобы указать точку входа в сеть Google Cloud. Я знаю, что предпоследнее значение в X-Forwarded-For
list - это тот, который я хочу, но я не знаю, каким будет IP-адрес последнего значения (прокси). Даже если бы я мог перечислить все адресное пространство Google Cloud для прокси (не указано, что GCLB работает только внутри адресного пространства GCP), это открыло бы его для любых других пользователей, которые могут получить сервер внутри этого адресного пространства.