node.js - 在 Node 前面使用nginx服务器作为代理时如何获取客户端真实IP

标签 node.js http express proxy ip

我需要在 nodeJs 中获取客户端的真实 IP 地址,当使用 nginx 代理服务器时,我总是获取本地主机 (127.0.0.1)。谁能帮我解决这个问题? 这是我的代码

app.set('trust proxy', 'loopback');
app.use(function(req, res, next) {
  app.ipInfo = req.headers['x-forwarded-for'] ||
    req.connection.remoteAddress ||
    req.socket.remoteAddress ||
    req.connection.socket.remoteAddress;
  next();
});

最佳答案

在 nginx 中,如果你想将远程用户的 IP 地址传递给你的后端 Web 服务器,你必须将 X-Forwarded-For header 设置为该远程 ip,如下所示:

proxy_set_header X-Forwarded-For $remote_addr;

关于node.js - 在 Node 前面使用nginx服务器作为代理时如何获取客户端真实IP,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47572601/

相关文章:

node.js - 使用 MongoDB 数据库部署 Node.js API

javascript - 如何使用 Node Js 或 javascript 计算距另一个点一定距离的点的纬度/经度

node.js - 需要构建的非缓存 npm 模块

android - 带有 HttpURLConnection 的 HTTP post 文件

android - 我可以在移动平台上运行 HTTP 服务器吗?

javascript - 具有多策略 sigup 的用户表架构

javascript - sequelize.transaction() 可以将异步函数作为回调吗?

node.js - 如何在不手动撤消 sequelize 迁移的情况下部署以前版本的 Node 服务器

node.js - 使用 Digital Ocean 和 FlightPlan.js 时 Node 应用程序出错 - 所有配置的身份验证方法均失败

javascript - 为什么 HTTP 是基于文本的而不是某种压缩方法?为什么 JS 没有被压缩?