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