如何在 Node.js HTTP 服务器应用程序中通过 IP 地址限制访问?
我正在寻找这样的东西:
Deny from all
Allow from ..
我只需要允许几个 IP 地址访问该站点。我怎样才能做到这一点?
如何在 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 请求。
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);