I have ngnix proxying to a nodejs server. I am trying to read the request client ip address/host name in my nodejs, but it's always
::ffff:127.0.0.1
But in my nginx access log, I can see the client ip address printed, not sure why my nodejs server can't get it.
x.x.x.x - - [24/Aug/2017:14:28:01 -0700] "GET ...."
Access the socket field of the Express request object, and then look up the remoteAddress property of that field. The remoteAddress will be the address of the client that sent the request. If you are running the app in development, this will be the loopback address: 127.0. 0.1 for IPv4 and ::1 for IPv6.
Add the following to your nginx configuration stanza that proxies to NodeJS:
proxy_set_header X-Real-IP $remote_addr;
Now you can read the header 'X-Real-IP' in NodeJS
Use proxy_set_header X-Real-IP $remote_addr;
as setting in location block where you are proxying the request.
In the server use the attribute "HTTP_X_REAL_IP"
For Example in python:
request.environ.get('HTTP_X_REAL_IP')
(or)
request.environ.get('HTTP_X_REAL_IP',request.environ.get('REMOTE_ADDR'))
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With