Oto rozwiązanie w przypadku korzystania wyraźnej:
Według documentation można włączyć trust proxy
do wyraźnej instancji, a następnie req.ip
zostanie wypełniona prawidłowym ip adres.
Poprzez umożliwienie "Trust" ustawienia proxy za pośrednictwem pełnomocnika app.enable ('Trust'), Express posiada wiedzę, że siedzi za serwerem proxy, a X-Forwarded- * pola nagłówka może być zaufany , które w przeciwnym razie mogą być łatwo podrobione.
Włączenie tego ustawienia ma kilka subtelnych efektów. Pierwszy z nich to , że X-Forwarded-Proto może być ustawiony przez odwrotne proxy, aby powiedzieć aplikacji , że jest https lub po prostu http. Ta wartość jest odzwierciedlana przez req.protocol.
Druga zmiana polega na tym, że wartości wpisu i req.ips będą następujące: wypełniona listą adresów X-Forwarded-For.
Oto przykład:
var app = express();
app.enable('trust proxy');
// ...
app.use(function(req, res, next) {
console.log('client ip address:', req.ip);
return next();
});
Jeśli używasz ELB w trybie TCP, zobacz http://stackoverflow.com/q/17981943/201952 – josh3736