代码之家  ›  专栏  ›  技术社区  ›  Alfred Balle

NodeJS,在TLS服务器上获取客户端IP

  •  0
  • Alfred Balle  · 技术社区  · 7 年前

    我有以下的 Node.JS 用于创建 TLS server 将数据管道传输到另一台服务器:

    var server = net.createServer(function (localsocket) {
    
      var remotesocket = tls.connect(options, function() {
    
        remotesocket.on('data', function(data) {
          var flushed = localsocket.write(data);
          if (!flushed) {
            remotesocket.pause();
          }
        });
    
        remotesocket.on('drain', function() {
          localsocket.resume();
        });
    
        remotesocket.on('close', function(had_error) {
          localsocket.end();
        });
    
      });
    
      localsocket.on('data', function (data) {
        var flushed = remotesocket.write(data);
        if (!flushed) {
          localsocket.pause();
        }
      });
    
      localsocket.on('drain', function() {
        remotesocket.resume();
      });
    
      localsocket.on('close', function(had_error) {
        remotesocket.end();
      });
    
    });
    

    一切看起来都很好,但我想改变 options 根据客户IPs。

    我试过了 console.log(localsocket) ,但这只会给我的服务器提供本地IP,而不会让客户端将数据包发送到 TLS服务器 .

    1 回复  |  直到 7 年前
        1
  •  1
  •   Tejashwi Kalp Taru    7 年前

    你的 connectListener (给createServer的函数)获取 socket_object 它是一个类型的对象 net.Socket . 有一处房产 remoteAddress 它具有远程主机的地址。

    例子:

    var server = net.createServer(function (localsocket) {
        console.log(localsocket.remoteAddress);
    }
    
    推荐文章