Как получить публичный IP-адрес клиента, отправляющего запрос с помощью Nodejs express? - PullRequest
0 голосов
/ 17 октября 2019

Я хочу получить публичный IP-адрес клиента с помощью Nodejs express. Я искал вопрос в Интернете, который заставил меня использовать это:

var ip = req.headers['x-forwarded-for'] || req.connection.remoteAddress;
    console.log(ip)

Однако, в моей консоли я получаю

:: ffff: 192.168.1.2

это мой локальный IP-адрес, а не публичный IP-адрес

Ответы [ 2 ]

1 голос
/ 18 октября 2019

Ваш код на самом деле правильный. Существует две причины, по которым он не работает:

  1. req.connection.remoteAddress показывает IP-адрес запрашивающей стороны. В вашем случае ваш узел прослушивает частный IP-адрес, поэтому единственным внешним IP-адресом, который может связаться с вашим сервером, является другой компьютер, работающий с тем же частным IP-диапазоном. Использование общедоступного IP-адреса для экземпляра вашего узла решит проблему.

  2. req.headers['x-forwarded-for'] может работать, только если в запросе присутствует заголовок. Обычно это тот случай, когда у вас есть прокси-сервер (какой-то http-сервер - nginx, apache ...), который прослушивает общедоступную сеть и передает данные на сервер узла, доступный только из частной сети. И этот прокси добавит заголовок x-forwarded-for к запросу с IP-адресом исходного клиента. В вашем случае у вас нет прокси или прокси не настроен для этого. Без дополнительной информации невозможно сказать точно.

0 голосов
/ 17 октября 2019

Вы должны использовать ip module

npm install ip

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...