如何在 OpenShift 上检测 WebSocket 连接的远程/客户端 IP 地址

Posted

技术标签:

【中文标题】如何在 OpenShift 上检测 WebSocket 连接的远程/客户端 IP 地址【英文标题】:How to detect the Remote/Client IP Address of a WebSocket connection on OpenShift 【发布时间】:2015-02-24 03:59:12 【问题描述】:

在 OpenShift 云中,通常的 Apache 代理将发送 HTTP 标头 x-client-ipx-forwarded-for,我可以使用它们来确定客户端 IP。

但对于newer proxy, which is the only option for WebSocket users,这些是唯一发送的标头:

connection upgrade sec-websocket-version sec-websocket-key origin host

这些标头都不能帮助我检测远程地址,socket.remoteAddress 的 NodeJS 属性没有用,因为它会检测代理 IP。

我可以使用任何解决方案吗?

【问题讨论】:

【参考方案1】:

这是我对 node.jssocket.io @ OpenShift 的体验。

我必须找到解决 socket.handshake.address 的方法,它无法按预期工作,所以这是我记录 client.ip 地址的实现...

client 连接时,server '询问' client.ip 和一个数据包。 0x00

0x00数据包到达客户端时:

socket.on('0x00', function()
        $.getJSON('http://jsonip.com/?callback=?', function(r) 
            var myIP = r.ip;
            socket.emit('0x01', myIP);
        ); 

将包含client.ip的0x01数据包发送到服务器

这将是服务器接收数据包 0x01 的示例:

socket.on('0x01', function(myIP)
    console.log('[+] Client @',myIP,':',socket.id);
  );

这对我来说是完美的,祝你实施顺利。

【讨论】:

以上是关于如何在 OpenShift 上检测 WebSocket 连接的远程/客户端 IP 地址的主要内容,如果未能解决你的问题,请参考以下文章

如何在 OpenShift 上部署多模块 maven spring boot 应用程序

如何在Openshift平台上通过Jenkins管道运行docker-in-docker?

在 openshift 上部署 Ninjaframework 应用程序

如何在本地主机上设置 openshift wordpress 设置

本人对于netty框架的一些理解,怎么与网站上的websock建立连接

openshift基础概念