Hi,

Your stick table definition is missing some information.
Use the one below:
stick-table type string len 40 size 200k expire 3m store http_req_cnt

Maybe you should also turn on option http-server-close.

Baptiste


On Wed, Oct 23, 2013 at 7:49 PM, Przemysław Hejman <[email protected]> wrote:
> Hi Baptiste,
>
> Thank you for your pieces of advice. I've tried to write such a config,
> however, it does not seem to work - can you tell me what I'm missing or what
> am I doing wrong?
>
> defaults
>         mode http
>         contimeout 5000
>         clitimeout 50000
>         srvtimeout 50000
>
>
> listen app 192.168.9.130:80
>         mode http
>         tcp-request connection accept if { src -f /etc/haproxy/whitelist.lst
> }  # Just a simple whitelist
> #create a stick table, string type, store number of requests
>         stick-table type string len 40 size 200k expire 3m
> #store url parameter called id
>         stick store-request urlp(SID,?)         # stick on urlp(SID)
> #track counter on url parameter id
>         tcp-request content track-sc0 urlp(SID,?)
> #deny if the number of request for the tracked id is greater than X
>         tcp-request connection reject if { sc0_http_req_cnt gt 2 }
>         default_backend web_servers
>
> backend web_servers
>         balance roundrobin
>         server web01 192.168.9.128:80 check inter 1000
>         server web02 192.168.9.129:80 check inter 1000
>
> --
>
> e-mail: [email protected]
>
> TouK sp. z o.o. s.k.a.
> 02-389 Warszawa, al. Bohaterów Września 9
> http://touk.pl
>
> Wiadomość napisana przez Baptiste w dniu 18 paź 2013, o godz. 14:40:
>
> Hi Przemyslaw,
>
> You can do this:
> create a stick table, string type, store number of requests
> store url parameter called id
> track counter on url parameter id
> deny if the number of request for the tracked id is greater than X
>
> Baptiste
>
>
> On Fri, Oct 18, 2013 at 11:02 AM, Przemysław Hejman <[email protected]> wrote:
>
> Hello everyone,
>
>
>
> Is there any possibility for HAProxy to perform a rate limit per repeating
>
> request? Consider following situation:
>
> Assume that you have requests like:
>
>
> GET  /file&id=123%someotherstuff
>
> GET  /file&id=476%someotherstuff
>
> GET  /file&id=111%someotherstuff
>
> GET  /file&id=111%someotherstuff
>
> GET  /file&id=111%someotherstuff
>
> GET  /file&id=476%someotherstuff
>
>
> What I want to do is to block the next request containing "id=111".  Lets
>
> say that I want to allow only 3  exactly same requests matching [0-9]{3}.
>
>
> Is there any possibility to configure a stick table to work like in this
>
> example?  If no, do you know any other mechanisms to perform such an action?
>
>
> Bes
>
> --
>
>
> e-mail: [email protected]
>
>
> TouK sp. z o.o. s.k.a.
>
> 02-389 Warszawa, al. Bohaterów Września 9
>
> http://touk.pl
>
>
>
>

Reply via email to