如何从部署在AWS Elastic beanstalk上的node.js express应用程序获取客户端IP?

时间:2016-09-27 05:24:51

标签: node.js amazon-web-services elastic-beanstalk http-proxy

我正在使用弹性beanstalk ngnix 代理服务器。我的应用程序代码在node.js express 框架上。我试图通过以下代码访问客户端IP

var ip = event.headers['x-forwarded-for'] || 
     event.connection.remoteAddress || 
     event.socket.remoteAddress ||
     event.connection.socket.remoteAddress;

但我总是为所有传入请求获取相同的客户端IP。我认为这将是代理服务器的IP地址。

如何从我的应用程序访问真实客户端地址???

2 个答案:

答案 0 :(得分:1)

我推迟使用@austince,客户端IP将成为Elastic Beanstalk列表中的 第一 条目。

示例

X-Forwarded-For:182.12.12.123,78.13.13.123

万一有人来寻找示例代码,这就是我在项目中使用的代码。

const _ = require('lodash');
const ipAddress = _.split(req.header('X-Forwarded-For'), ',');
ipadd = _.trim(_.first(ipAddress));

答案 1 :(得分:0)

以下是AWS的指南:https://docs.aws.amazon.com/elasticloadbalancing/latest/classic/x-forwarded-headers.html#x-forwarded-for

X-Forwarded-For 有效,但有时是一个已经被击中的IP列表。客户端IP应该是 Elastic Beanstalk列表中的最后一个条目

<强>实施例

  

X-Forwarded-For:ip-address-1,ip-address-2,client-ip-address