当前位置: 首页 > 面试题库 >

如何使用PROXY协议获取客户端的真实IP地址?

段成益
2023-03-14
问题内容

AWS刚刚向ELB添加了对PROXY协议的支持,该协议封装了TCP流并添加了客户端IP地址(如代理所示),以便后端服务器可以访问客户端的IP(因为否则它将只看到ELB的IP) 。

我知道ELB可以在HTTP(S)模式下运行,在该模式下ELB可以插入X-Forwarded-For标头,但是我在TCP模式下运行ELB
以便可以通过SPDY为站点提供服务。

如何修改我的node.js应用程序(使用Express)以使用PROXY协议?


问题答案:

余由模块caled proxywrap该包裹的node.js
ServerS和自动去除从连接流,并且复位PROXY协议报头socket.remoteAddresssocket.remotePort将这些值在代理报头中找到。

它的工作原理与内置Server模块(例如httphttpsnet)作为一个下拉更换的模块:

var http = require('http')
    , proxiedHttp = require('proxywrap').proxy(http)
    , express = require('express')
    , app = express()
    , srv = proxiedHttp.createServer(app); // instead of http.createServer(app)

app.get('/', function(req, res) {
    res.send('IP = ' + req.connection.remoteAddress + ':' + req.connection.remotePort);
});

srv.listen(80);

它也可以与spdy模块一起使用:

var proxiedSpdy = require('proxywrap').proxy(require('spdy').server);

当然,您必须在ELB(或应用程序支持的任何代理)上启用PROXY协议。



 类似资料:
  • 本文向大家介绍PHP获取真实客户端的真实IP,包括了PHP获取真实客户端的真实IP的使用技巧和注意事项,需要的朋友参考一下 REMOTE_ADDR 是你的客户端跟你的服务器“握手”时候的IP。如果使用了“匿名代理”,REMOTE_ADDR将显示代理服务器的IP。 HTTP_CLIENT_IP 是代理服务器发送的HTTP头。如果是“超级匿名代理”,则返回none值。同样,REMOTE_ADDR也会被

  • 本文向大家介绍Java面试之如何获取客户端真实IP,包括了Java面试之如何获取客户端真实IP的使用技巧和注意事项,需要的朋友参考一下 前言 在进行一些小游戏开发时,我们经常比较关注的一个功能便是分享。针对分享,我们希望能根据各个城市或者地区,能有不同的分享文案,辨识地区的功能如果由服务器来完成的话,我们就需要知道客户端的真实IP。今天我们就来看看服务器是如何获取到客户端的真实IP的。 <!--

  • 问题内容: 我想获取使用我网站的客户IP地址。我正在使用PHP superglobal: 但是我看到它不能使用此提供正确的IP地址。我得到了我的IP地址,发现它与我的IP地址不同,并且我还可以在某些网站上看到我的IP地址,例如: 我粘贴了提供PHP功能的IP地址,但是此网站未显示任何结果。这个问题是怎么发生的,如何获得客户端的IP地址? 问题答案: 获取访问者/客户的IP地址的最简单方法是使用或变

  • 问题内容: 我遇到一个简单的问题。我将 在HTTPServlet中 获得 真正的客户端IP 。 从现在开始,我使用: 但是现在它返回一个错误的IP。例如:xxx.xxx.xxx。 50, 但我的IP就像xxx.xxx.xxx。 159 。(在http://whatismyipaddress.com/上检查)。 现在我尝试使用: 它返回NULL。 我还对以下课程进行了探讨: 它还返回了xxx.xxx

  • get_client_ip($type = 0, $adv = false) 功能 获取客户端IP地址 参数 $type: string 返回类型 0 返回IP地址 1 返回IPV4地址数字 $adv: boolean 是否进行高级模式获取(有可能被伪装) 返回 string 客户端IP地址

  • 目前,我们正在通过AWS网络负载平衡器将请求传递给AWS应用程序负载平衡器。然而,我们正试图保留请求的原始IP地址,但这正在被剥离。我们正在尝试启用代理协议v2,但这会导致错误。AWS ALB是否使用代理协议v2?