blob: 60e63f556a124c829324a4535db4fd15b8a509de (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
|
NAME
Plack::Middleware::Throttle - A Plack Middleware for rate-limiting
incoming HTTP requests.
SYNOPSIS
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'] ] };
};
DESCRIPTION
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.
OPTIONS
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.
AUTHOR
franck cuny <franck@lumberjaph.net>
SEE ALSO
LICENSE
This library is free software; you can redistribute it and/or modify it
under the same terms as Perl itself.
|