通过IP地址限制对基于Node.js的HTTP服务器的访问

如何限制通过Node.js HTTP服务器应用程序中的IP地址访问?

我正在寻找这样的东西:

Deny from all Allow from .. 

我需要允许访问该网站只有几个IP地址。 我怎样才能做到这一点?

我不确定这个方法是多么的可靠,但是这里是从networking上的答案中收集的:

 var http = require('http'); http.createServer(function (req, res) { var ip = req.ip || req.connection.remoteAddress || req.socket.remoteAddress || req.connection.socket.remoteAddress; if (ip == '127.0.0.1') // exit if it's a particular ip res.end(); ... 

请有人更精通节点 – 纠正我

如果您通过networking地址限制对整个服务器访问 ,则最好将这些规则放在防火墙中。 如果因为某种原因(configuration的简单性,dynamic授权等)而想在应用层处理它,那么最好在连接时立即执行此操作,而不是等待HTTP请求。

Node.js的http.Server发出一个connection事件 ,您可以使用它来确定远程地址并在实际的HTTP请求之前(或在此期间) 终止connection 。 这段代码没有经过testing,但应该让你开始:

 var server = http.createServer(function (req, res) { // Your normal request handling goes here }); server.on('connection', function (sock) { console.log(sock.remoteAddress); // Put your logic for what to do next based on that remote address here }); server.listen(80);