考虑一下,以下表达app:
var express = require('express');
var http = require('http');
var httpApp = express();
httpApp.configure(function() {
httpApp.use(express.static(__dirname + '/static/'));
});
var server = http.createServer(httpApp).listen(4444);
现在,
我希望这台服务器不能公开提供。 仅响应来自特定客户端的IP地址/域请求。其他人都应该403 - Forbidden
错误。
我搜索了API Doc&找到了这样做的方法,首先通过app.enable('trust proxy')
&然后检查req.ip
。
但是,我无法访问req
对象。所以如果有人拿这个代码&可以告诉我如何拒绝基于其IP /域的请求,这将是非常有用的
答案 0 :(得分:7)
只需添加一个检查IP的中间件,如果不匹配就拒绝访问:
app.use(function(req, res, next) {
if (allowed(req.ip))
next();
else
res.status(403).end('forbidden');
});
答案 1 :(得分:0)
使用express-ipfilter
<强>安装强>
npm install express-ipfilter
使用Express
var express = require('express')
, ipfilter = require('express-ipfilter')
, app = express.createServer()
;
// Whitelist the following IPs
var ips = ['127.0.0.1'];
// Create the server
app.use(ipfilter(ips, {mode: 'allow'}));
app.listen(3000);