Better, smaller, faster - koa middleware for limit request by ip, store in-memory.
upcoming v3
![Nodei.co stats][npmjs-install]
InstallInstall with npm
$ npm install koa-better-ratelimit
$ npm test
This package follows ferver
Please read history.md for more info!
- option
message_429
deprecated >=v2.1.x, instead useaccessLimited
- option
message_403
deprecated >=v2.1.x, instead useaccessForbidden
Usage
Some demo example which is exactly
example.js
var app = require('koa')(),
limit = require('./index');
app.use(limit({
duration: 1000 * 60 * 3, //3 mins
max: 5
//blackList: ['127.0.0.1']
}));
app.use(function * helloWorld(next) {
this.body = 'Hello World';
yield next;
});
var port = process.env.PORT || 3333;
app.listen(3333);
console.log('Koa server start listening on port ' + port);
.koaBetterRatelimit
With options through init you can control black/white lists, limit per ip and reset interval.
-
[options]
{Object}-
duration
{Integer} Limit duration in milliseconds, default1000 * 60 * 60 * 1
(1 hour) -
whiteList
{Array} All ips that won't be limited, defaultempty array
-
blackList
{Array} All ips that always be limited and 403, defaultempty array
-
accessLimited
{String} Message for all requests after limit, default429: Too Many Requests.
-
accessForbidden
{String} Message for limited/forbidden, default403: This is forbidden area for you.
-
max
{Integer} Max requests per ip, default500
-
env
{Boolean} Manage enviroment, for tests will usex-koaip
header, defaultnull
-
-
return
{GeneratorFunction}
Diferences
Between koa-better-ratelimit and koa-ratelimit
- Support blackList and whiteList options
- Pure in-memory store, no other adapters
-
duration
option in seconds, not in milliseconds - 7 working tests
- removed
db
option - added
Retry-After
header - added separate 403 and 429 option messages
Between koa-better-ratelimit and koa-limit
- koa-limit is totally broken (to v1.0.1)
- removed
redis
and test dependencies - smaller, better, working, simple
- added separate 403 and 429 option messages
Authors & Contributors
Charlike Make Reagent [![author tips][author-gittip-img]][author-gittip]
- [gittip/tunnckoCore][author-gittip]
- github/tunnckoCore
- twitter/tunnckoCore
- npmjs/tunnckoCore
License
Copyright (c) 2014-2015 Charlike Mike Reagent, contributors.
Released under the MIT
license.
Powered and automated by kdf, March 24, 2015