Ecco una soluzione nel caso in cui si utilizza espresso:
Secondo il documentation, è possibile attivare trust proxy
per l'istanza espresso e quindi req.ip
sarà popolato con l'IP corretto indirizzo.
Abilitando il "proxy fiducia" impostazione via app.enable ('delega fiducia'), espresso avrà una conoscenza che è seduto dietro un proxy e che gli X-Forwarded- * campi di intestazione possono essere attendibile , che altrimenti potrebbe essere facilmente falsificato.
Abilitare questa impostazione ha diversi effetti delicati. Il primo di cui è che X-Forwarded-Proto può essere impostato dal proxy inverso per indicare all'app che è https o semplicemente http. Questo valore è riflesso da req.protocol.
La seconda modifica apportata è che i valori req.ip e req.ips saranno popolati con l'elenco di indirizzi X-Forwarded-For.
Ecco un esempio:
var app = express();
app.enable('trust proxy');
// ...
app.use(function(req, res, next) {
console.log('client ip address:', req.ip);
return next();
});
Se stai usando ELB in modalità TCP, vedere http://stackoverflow.com/q/17981943/201952 – josh3736