A simple ip based rate limiting plugin for Hapi using Redis.
##Installation
npm install hapi-ratelimit
In the Hapi init code:
var Hapi = require('hapi');
var hratelimit = require('hapi-ratelimit');
var server = new Hapi.Server();
// Config for ratelimit
var rateOpts = {
redis:{
port:#redis-port#,
host:#redis-host#
},
namespace: "clhr", //namespace for redis keys
global: {
limit: 200,
duration: 60
} //Set limit to -1 or leave out global to disable global limit
//The global limit is not given priority over local limits
};
var connection = server.connection({
port: 80,
labels: 'something'
});
connection.route({
method: 'GET',
path: '/someImportantRoute',
handler: someHandler,
configs: {
plugins: { // If you want to override the default values
"hapi-ratelimit": {
limit: 100,
duration: 60
} //limits to one hundred hits per minute on a specific route
}
}
});
connection.register({
register: hratelimit,
options: rateOpts
},
function(err) {
console.log(err);
}
);