nginx как получить IP-адрес клиента запроса

У меня есть проксирование ngnix на сервер nodejs. Я пытаюсь прочитать IP-адрес/имя хоста клиента запроса в моем nodejs, но это всегда

::ffff:127.0.0.1

Но в моем журнале доступа к nginx я вижу напечатанный IP-адрес клиента, не знаю, почему мой сервер nodejs не может его получить.

x.x.x.x - - [24/Aug/2017:14:28:01 -0700] "GET ...."

person PMat    schedule 24.08.2017    source источник


Ответы (2)


Добавьте следующее в раздел конфигурации nginx, который проксирует NodeJS:

proxy_set_header X-Real-IP $remote_addr;

Теперь вы можете прочитать заголовок «X-Real-IP» в NodeJS.

person Akber Choudhry    schedule 24.08.2017
comment
Я уже пробовал это, в моем nodejs это не определено. Я обновлю вопрос своим nginx.conf - person PMat; 25.08.2017
comment
Я только что обнаружил, что между ними был еще один прокси-сервер ngnix, который это исправил. - person PMat; 25.08.2017

Используйте proxy_set_header X-Real-IP $remote_addr; в качестве параметра в блоке местоположения, где вы проксируете запрос.

На сервере используйте атрибут "HTTP_X_REAL_IP"

Например, в питоне: request.environ.get('HTTP_X_REAL_IP') (or) request.environ.get('HTTP_X_REAL_IP',request.environ.get('REMOTE_ADDR'))

person SANDEEP MACHIRAJU    schedule 24.01.2019