问题
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 ...."
回答1:
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
回答2:
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'))
来源:https://stackoverflow.com/questions/45871225/nginx-how-to-get-the-request-client-ipaddress