【问题标题】:Not getting remote address while using proxy in socket.io在 socket.io 中使用代理时未获取远程地址
【发布时间】:2012-06-26 08:00:06
【问题描述】:

在我的 socket.io 代码中,

socket.sockets.on('connection', function(client){ 
    var ip = client.handshake.address.address;
    ..
}

ip 总是返回 127.0.0.1,这是因为服务器位于代理后面。 如何正确获取远程地址?

编辑:我正在使用 http-proxy

【问题讨论】:

  • 检查 client.handshake.headers['x-forwarded-for'] || client.handshake.address.address;会工作的。

标签: node.js proxy socket.io


【解决方案1】:

对于可能来自 Google 并使用 NGINX 的人:这些都不适合我,我按照答案 in this other question 并修改了我的 proxy_pass,以创建一个节点可以使用的新标头。之后别忘了致电sudo systemctl restart nginx

【讨论】:

    【解决方案2】:

    在 > 1.0 版本中,语法类似:

    socket.handshake.headers['x-forwarded-for'] || socket.request.connection.remoteAddress;
    

    【讨论】:

      【解决方案3】:

      是的,这对我有用。

      client.handshake.headers['x-forwarded-for'] || client.handshake.address.address;
      

      我正确获取了远程 IP 地址,而不是 127.0.0.1

      【讨论】:

      • 已确认:这是自我在 google 找到的最后 10 个答案以来第一个可行的解决方案。
      • 这对我不起作用。我在网络服务器/代理后面,使用 1.3.2
      • 这个只适用于socket 0.9。 > 1.0版本怎么样?
      猜你喜欢
      • 2022-12-10
      • 1970-01-01
      • 1970-01-01
      • 2016-02-29
      • 1970-01-01
      • 2018-10-11
      • 2018-09-04
      • 1970-01-01
      • 2012-08-05
      相关资源
      最近更新 更多