插件
koa-ratelimit
使用
const Koa = require('koa');
const ratelimit = require('koa-ratelimit');
const Redis = require('ioredis');
const app = new Koa();
app.use(ratelimit({
'driver': 'redis',
'db': new Redis({
'max_clients': 10,
'min_clients': 1,
'port': 6379,
'host': '127.0.0.1',
'password': '1234567',
}),
'duration': 60000, // 时间 毫秒
'errorMessage': 'Sometimes You Just Have to Slow Down.',
'id': ctx => ctx.ip, // IP作为唯一key
'headers': {
'remaining': 'Rate-Limit-Remaining',
'reset': 'Rate-Limit-Reset',
'total': 'Rate-Limit-Total',
},
'max': 5, // 60秒内最大访问次数5
'disableHeader': false,
'whitelist': ctx => { // 白名单
// console.log('whitelist===========>', ctx);
// some logic that returns a boolean
'blacklist': ctx => { // 黑名单 高频访问ip 可以写在这里
// console.log('blacklist===========>', ctx);
}));
app.use(async ctx => {
ctx.body = 'Stuff!';
});
app.listen(3000);
console.log('listening on port 3000');
访问 http://127.0.0.1:3000
领取专属 10元无门槛券
私享最新 技术干货