Как я могу получить локальный IP-адрес удаленного клиента с node.js, используя экспресс-фреймворк? - PullRequest
0 голосов
/ 28 июня 2018

Я только что столкнулся с задачей, мне нужно получить локальный IP-адрес удаленного клиента, который обращается к API REST на нашем сервере, я не использую какой-либо балансировщик нагрузки (так как пока ничего не знаю об этом), мое приложение работает на моем компьютере локально, и я показываю его в Интернете с помощью инструмента ngrok, который размещает мое приложение и делает его доступным для Интернета. Я поделюсь с вами тем, что я сделал до сих пор, но это не отвечает моим потребностям, так как он получает только публичный IP-адрес удаленного клиента, что означает, что, если два разных пользователя обращаются к API из одной сети, с этим кодом , их IP-адреса сообщаются одинаково,

RedisRouter.post('/incrementvisit', async (req: Request, res: Response, next: NextFunction) => {
try {
    console.log('req.ip', req.ip);
    console.log('request.connection.remoteAddress==================================', req.connection.remoteAddress);
    var ip = req.headers['x-forwarded-for'];
    console.log('ip from headers -------------->', ip);

    console.log('api after trimming', ip);
    res.send(await rs.visitCounter(req.body.name,ip));
} catch (error) {
    console.log(error);
    next(error);
}
});

`это всегда дает мне один и тот же IP-адрес для всех тех пользователей, которые запрашивают API из одной и той же сети, это их публичный IP-адрес, а не локальный. По сути, мне нужно отслеживать количество разных пользователей, проверяющих наш API, и я не могу использовать один и тот же IP-адрес для учета двух разных людей, запрашивающих API из одной сети.

плюс, пожалуйста, предложите мне несколько хороших статей для начинающих по использованию веб-прокси и веб-сетей для разработчиков. Спасибо, останься благословенным.

1 Ответ

0 голосов
/ 28 июня 2018

Я не уверен, на каком сервере работает ngrok, но вы пробовали:

var ip = req.headers["x-real-ip"]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...