Node.js 使用AWS api网关的专用和公共ip+;λ+;Nodejs

Node.js 使用AWS api网关的专用和公共ip+;λ+;Nodejs,node.js,amazon-web-services,aws-lambda,aws-api-gateway,Node.js,Amazon Web Services,Aws Lambda,Aws Api Gateway,我试图在AWS环境中获得用户的私有IP和公共IP。根据这个答案()应该有一个标题X-Forwarded-For,独立的IP和论坛() 但是当我通过api网关+lambda+nodejs v8部署api时。我已经为nodejs处理程序函数参数的事件和上下文变量设置了JSON,用于调试()我没有得到私有IP lambda函数是 const AWS = require('aws-sdk'); exports.handler = function(event, context, callback){

我试图在AWS环境中获得用户的私有IP和公共IP。根据这个答案()应该有一个标题X-Forwarded-For,独立的IP和论坛()

但是当我通过api网关+lambda+nodejs v8部署api时。我已经为nodejs处理程序函数参数的事件和上下文变量设置了JSON,用于调试()我没有得到私有IP

lambda函数是

const AWS = require('aws-sdk');
exports.handler = function(event, context, callback){
    callback(null, {
        "statusCode": 200,
        "body": JSON.stringify({event,context})
    });
}
API网关详细信息

获取-集成请求

积分类型——Lambda函数

使用Lambda代理集成--True


函数API:

不知道是什么让你陷在这里,如果我错了,请纠正我。 发件人:

X-Forwarded-For(XFF)HTTP头字段是用于标识通过HTTP代理或负载平衡器连接到web服务器的客户端的原始IP地址的常用方法

我将X-Forwarded-For设置在标题中,并与邮递员一起测试:

标题“X-Forwarded-For”显示用户的公共ip

这就是你能得到的

内部IP不可见


只有标题中指示的“公共ip”。

案例1:出于安全原因,您无法获取用户的私有ip(如果由用户配置,则由NAT或PAT完成)(网络地址转换或端口地址转换在屏幕后面。NAT将把这个ip添加到他的表中,并提前发送带有公共id的请求,或者可以说是路由器id)

案例2:如果这里的私有ip是指多个用户使用同一个公共网络(WIFI等)。那么您可以再次定义两个ip,一个是公共的,对所有人来说都是公共的,但在公共网络内,他们有另一个ip,在该公共网络内是唯一的

例如:假设有一个带有公共IP(1.1.1.1)的WIFI。它有两个用户A和B。值得注意的是,因为他们共享同一个WIFI,所以路由器将只有一个IP(公共和通用),但在这个路由器内,A和B将有不同的IP,如192.1.1.1和192.1.1.2,它们可以被称为私有

在这两种情况下,您将只获得公共IP(在X-Forwarded-For报头的位置0)。

您可以在内部获得X-Forwarded-For标头 event.headers.multiValueHeaders

如果您可以同时访问这两个站点,那么拥有私有和公共ip的好处是什么


要访问AWS VPC专用子网,您必须使用NAT,出于安全原因,客户端永远不会知道实际IP。我要求您再次检查您的要求。

这是您手动设置的。我需要客户端IP,主要是192.168.0.100,而不是您的本地主机IP或任何其他手动设置,我想跟踪计算机的局域网ip。基于本文