Plack::Middleware::Throttle - A Plack Middleware for rate-limiting incoming HTTP
requests.
my $handler = builder {
enable "Throttle::Hourly",
max => 2,
backend => Plack::Middleware::Throttle::Backend::Hash->new(),
path => qr{^/api};
sub { [ '200', [ 'Content-Type' => 'text/html' ], ['hello world'] ] };
};
This is a "Plack" middleware that provides
logic for rate-limiting incoming HTTP requests to Rack applications.
This middleware provides three ways to handle throttling on
incoming requests :
- Hourly
- How many requests an host can do in one hour. The counter is reseted each
hour.
- Daily
- How many requets an host can do in one hour. The counter is reseted each
day.
- Interval
- Which interval of time an host must respect between two request.
- code
- HTTP code returned in the response when the limit have been exceeded. By
default 503.
- message
- HTTP message returned in the response when the limit have been exceeded.
By defaylt "Over rate limit".
- backend
- A cache object to store sessions informations.
backend => Redis->new(server => '127.0.0.1:6379');
or
backend => Cache::Memcached->new(servers => ["10.0.0.15:11211", "10.0.0.15:11212"]);
The cache object must implement get, set and
incr methods. By default, you can use
"Plack::Middleware::Throttle::Backend::Hash".
By default, if no backend is specified,
Plack::Middleware::Throttle::Backend::Hash is used.
- key_prefix
- Key to prefix sessions entry in the cache.
- path
- URL pattern or a callback to match request to throttle. If no path is
specified, the whole application will be throttled.
- white_list
- An arrayref of hosts to put in a white list.
- black_list
- An arrayref of hosts to put in a black list.
franck cuny <franck@lumberjaph.net>
This library is free software; you can redistribute it and/or modify it under
the same terms as Perl itself.