koa-better-ratelimit

Better, smaller, faster - koa middleware for limit request by ip, store in-memory.


Keywords
koa, middleware, ratelimit, requestlimit, limit, in-memory, memorystore, rate, filter, id, ip, koajs
License
MIT
Install
npm install koa-better-ratelimit@2.1.2

Documentation

npmmit licenseusing ferver versioningbuild statuscoverage statusdeps status

Better, smaller, faster - koa middleware for limit request by ip, store in-memory.

upcoming v3

Install ![Nodei.co stats][npmjs-install]

Install 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 use accessLimited
  • option message_403 deprecated >=v2.1.x, instead use accessForbidden

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, default 1000 * 60 * 60 * 1 (1 hour)
    • whiteList {Array} All ips that won't be limited, default empty array
    • blackList {Array} All ips that always be limited and 403, default empty array
    • accessLimited {String} Message for all requests after limit, default 429: Too Many Requests.
    • accessForbidden {String} Message for limited/forbidden, default 403: This is forbidden area for you.
    • max {Integer} Max requests per ip, default 500
    • env {Boolean} Manage enviroment, for tests will use x-koaip header, default null
  • 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]

License MIT license

Copyright (c) 2014-2015 Charlike Mike Reagent, contributors.
Released under the MIT license.


Powered and automated by kdf, March 24, 2015