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

Vit*_*nok 21 node.js

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

我正在寻找这样的东西:

Deny from all
Allow from ..
Run Code Online (Sandbox Code Playgroud)

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

Bra*_*rad 24

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

Node.js的http.Server发出一个connection事件,您可以使用事件确定远程地址并在实际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);
Run Code Online (Sandbox Code Playgroud)


Ale*_*x K 23

我不确定这种方法是多么的防弹,但在这里它是从网络上的答案收集的:

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();
...
Run Code Online (Sandbox Code Playgroud)

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