因为nginx代理的原因,我们在请求头中获取到的用户ip只是nginx代理的ip,并非用户真实ip,原因是经过反向代理后,由于在客户端和web服务器之间增加了中间层,因此web服务器无法直接拿到客户端的ip,可以通过$remote_addr变量拿到的将是反向代理服务器的ip地址。
第一步,修改nginx配置文件
#获取用户真实ip地址
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
第二步,在nodejs中获取请求头我们自定义的用户真实ip文章来源:https://www.toymoban.com/news/detail-642990.html
const ip = req.headers['x-real-ip'] || req.connection.remoteAddress
console.log('ip为:' + ip)
备注:如果有websocket的wss连接,需要获取ip,可以参考我的另一篇文章:
配置域名SSL证书、阿里云OSS自定义域名的SSL证书,以及解决配置后WebSocket报错问题_Sca_杰的博客-CSDN博客文章来源地址https://www.toymoban.com/news/detail-642990.html
到了这里,关于nginx代理后,nodejs如何获取用户真实ip地址(包括websocket获取用户真实IP地址)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!