HttpLimitReq Module not blocking every request?

Maxim Dounin mdounin at
Wed Mar 30 16:22:32 MSD 2011


On Wed, Mar 30, 2011 at 07:26:05AM -0400, j0nes2k wrote:

> I am trying to understand how the HttpLimitReq Module works. I have read
> that it uses the Leaky Bucket Algorithm, however I am not sure how to
> understand the behaviour I am observing. Here is my test setup:
> limit_req_zone $binary_remote_addr zone=one:10m rate=1r/m;
> location /test {
>         limit_req zone=one nodelay;
> }
> Every resource under /test should be accessible only once per minute -
> is that right?

Yes.  Once per minute from single ip address.

> Now I have set up a test script to download a file from /test every
> second and I get the following results:
> success
> blocked
> blocked
> blocked
> blocked
> success
> ...
> So every fifth request is coming through, so In total I get 12
> successful requests and 48 blocked request per minute.  However, from
> the rate setting I would expect to have only one successful download and
> 59 blocked requested. 
> Can anyone explain why this is happening? Also is there a way to
> configure nginx to show the behaviour I am expecting?

My bet you've forgot to reload config after changing rate.

Maxim Dounin

More information about the nginx mailing list