我需要在hapijs node中的请求中获取客户端的IP地址...我们使用pm2和Nginx来运行服务器,并使用request.info.address,但它只提供服务器的本地ip地址127.0.0.1,而我需要的是使用我的应用程序的客户端的IP地址,例如:192.x.x.111。
我需要在hapijs node中的请求中获取客户端的IP地址...我们使用pm2和Nginx来运行服务器,并使用request.info.address,但它只提供服务器的本地ip地址127.0.0.1,而我需要的是使用我的应用程序的客户端的IP地址,例如:192.x.x.111。
您需要检查反向代理(nginx)的配置,看看是否正在发送IP以及如何发送。
例如(nginx conf):
server {
listen 0.0.0.0:80;
server_name [your_domain];
root /webroot/[your_domain or webapp name];
access_log /var/log/nginx/[your_domain or webapp name].log;
location / {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header HOST $http_host;
proxy_set_header X-NginX-Proxy true;
proxy_pass http://127.0.0.1:[port assigned to node];
proxy_redirect off;
}
}
X-Real-IP
获取客户端的IP地址。request
对象:const ip = request.headers['x-real-ip'] || request.info.remoteAddress;
如果您的服务器在 Nginx 反向代理服务器后面运行,则需要使用以下命令:
req.headers['x-real-ip']
req.info.remoteAddress
return request.headers['x-forwarded-for'] ||
request.connection.remoteAddress ||
request.socket.remoteAddress ||
request.connection.socket.remoteAddress;
127.0.0.1
作为远程地址,因为nginx将请求转发到同一主机上。