2016-05-13 84 views
0

我有一个nodeja HTTP服务器,这个服务器一直很好,直到我在亚马逊负载均衡器(它在TCP协议上)上启用代理来获取客户端IP。 我想知道的NodeJS的TCP服务器的工作原理完美,但HTTP服务器无法Nodejs http服务器无法处理来自Amazon负载平衡器的启用代理的请求

var net = require('net'); 
var proxy_protocol = require('node-proxy-protocol'); 

net.createServer(function(socket) { 
     proxy_protocol.parse(socket, function(error, obj) { 
      console.log(obj); //returns required client's info 
     }); 
}); 

但是,为什么HTTP服务器无法执行,如果我取代 “网” 以 “http”:

This does not work 
var net = require('http'); 
var proxy_protocol = require('node-proxy-protocol'); 

http.createServer(function(req,res) { 
     proxy_protocol.parse(req, function(error, obj) { 
      console.log(obj); //returns nothing 
     }); 
}); 

虽然我知道HTTP(通常)是通过TCP进行操作的,所以它必须适用于两者。 基本上我认为,我的Http服务器无法处理来自Load Balancer的TCP请求。 请让我知道我哪里错了。

回答

0

我的nodejs HTTP服务器没有处理来自Load Balancer的TCP,所以我将Load Balancer的协议切换到HTTP。现在我的HTTP服务器运行良好。

相关问题