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

按IP地址限制对基于Node.js的HTTP服务器的访问,node.js,Node.js,如何限制Node.js HTTP服务器应用程序中的IP地址访问 我在找这样的东西: Deny from all Allow from .. 我需要允许访问该网站只有几个IP地址。我怎样才能做到这一点呢?我不确定这种方法的防弹性如何,但这里是从网上收集的答案: var http = require('http'); http.createServer(function (req, res) { var ip = req.ip || req.connection.remoteAddress

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

我在找这样的东西:

Deny from all
Allow from ..

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

我不确定这种方法的防弹性如何,但这里是从网上收集的答案:

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();
...

请找一位更精通节点的人-纠正我

如果您通过网络地址限制对整个服务器的访问,最好将这些规则放在防火墙中。如果出于某种原因(易于配置、动态授权等),您希望在应用层处理它,那么最好在连接后立即执行此操作,而不是等待HTTP请求

js,可用于在实际HTTP请求之前(或期间)确定远程地址并终止连接。此代码未经测试,但应该让您开始:

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);

很好。我目前使用一个系统,在该系统中,我从nodejs记录ip,并定期运行shell脚本来分别更新iptables。你所说的“在防火墙进入应用层之前,将这些规则放入防火墙”是完全正确的。