Сохранить IP пользователя после использования Pipe в экспрессе - PullRequest
0 голосов
/ 30 сентября 2018

После перенаправления канала я теряю IP-адрес пользователя.

До перенаправления (первый экспресс-сервер):

app.use('/api', function(req, res) {
  var url = 'http://localhost:4000/' 
  console.log('ip Before:', req.ip);
  req.pipe(request(url)).pipe(res)
})

После перенаправления (второй экспресс-сервер http://localhost:4000/):

function loggingMiddleware(req, res, next) {
  console.log('IP AFTER: ', req.ip)
  next();
}
server.express.use(loggingMiddleware);

Результат:

ip Before: ::ffff:172.56.42.154
IP AFTER:  ::ffff:127.0.0.1

Как я могу «передать» IP ::ffff:172.56.42.154 после выполнения pipe()

1 Ответ

0 голосов
/ 02 октября 2018

Если я использую прокси (https://github.com/villadora/express-http-proxy):

var proxy = require('express-http-proxy')
app.use('/api', proxy('http://localhost:4000/', {
  proxyReqOptDecorator: function(proxyReqOpts, srcReq) {
    proxyReqOpts.headers['x-forwarded-for'] = srcReq.ip
    return proxyReqOpts
  }
}))

и на сервере (порт: 4000), у меня будет:

function loggingMiddleware(req, res, next) {
  console.log('IP AFTER: ', req.ip)
  console.log('x-forwarded-for:', req.header('x-forwarded-for'))
  next();
}
server.express.use(loggingMiddleware);

Результат:

ip Before: ::ffff:172.56.42.154
IP AFTER:  ::ffff:127.0.0.1
x-forwarded-for: ::ffff:172.56.42.154
...