On 15/07/2014 05:49 μμ, Baptiste wrote:
> On Tue, Jul 15, 2014 at 12:40 AM, bjun...@gmail.com <bjun...@gmail.com> wrote:
>> Hi folks,
>>
>>
>> I've a question regarding the ordering/processing of ACL's.
>>
>>
>>
>> Example (HAProxy 1.4.24):
>>
>>
>> ----
>>
>> frontend http_in
>> .
>> .
>>
>>
>> acl  is_example.com  hdr_beg(host) -i example.com
>>
>> acl  check_id  url_reg   code=(1001|1002|............)
>>
>> acl  check_id  url_reg   code=(3000|4001|............)
>>
>> use_backend  node01 if  is_example.com  check_id
>>
>>
>>
>> acl  is_example.de  hdr_beg(host) -i example.de
>>
>> acl  check_id  url_reg   code=(6573|7890)
>>
>> use_backend  node02 if  is_example.de  check_id
>>
>>
>> ----
>>
>>
>>
>> I assumed that the "check_id" - ACL from the second block wouldn't be
>> combined/OR'ed with the 2 "check_id" - ACL's from the first block
>> (because of the other configuration statements in between).
>>
>>
>>
>> But they are combined/OR'ed, is this behavior intended ?
>>
>>
>>
>> Thanks,
>> -------------------
>>
>> Bjoern
>>
> 
> Hi Bjoern,
> 
> ACLs are processed only if they are called by a directive.
> When many ACLs are called by a directive, an implicit logical AND is applied.
> an explicit logical OR can be declared as well
> when a AND is applied between many ACLs, HAProxy stops processing them
> as soon as one is wrong
> when a OR is applied between many ACLs, HAProxy stops processing them
> as soon as one is true
> 
> some ACLs are cheaper to run than other, make your choice :)
> 
> Side note, to avoid any mistake in your conf:
>   acl  is_example.de  hdr_beg(host) -i example.de
> => this will match http://example.de/path/path/blah.php
>      or  http://example.de.google.com/path/path/blah.php
> 
> you might want to match this:
>   acl  is_example.de  hdr_end(host) -i example.de
> 


Is URI part of Host header?

Cheers,
Pavlos



Attachment: signature.asc
Description: OpenPGP digital signature

Reply via email to