У моєму середовищі є запити користувачів, що проходять через низку систем:
[Клієнт] -> [ELB] ---> [nginx] -> [веб]
(ELB = AWS пружний балансир навантаження)
Завдяки цій відповіді я маю 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 році, не маючи везіння. Чи змінилося чи покращилось з того часу?
$realip_remote_addr
. Це прекрасно працює. Насправді намагався змусити proxy_protocol працювати, і натрапив на патчі nginx для 1.9.7