Hello, On Mon, 5 Oct 2026 at 17:28, Björn Jacke <[email protected]> wrote: > > Hi, > > I see a weird issue with logical OR operator in an ACL: > > acl requests-chrome hdr(sec-ch-ua) -m sub \"Not || hdr(sec-ch-ua) -m > sub HeadlessChrome || hdr(user-agent) -m sub Chrome
There is no OR operator here. Everything after the first -m sub is considered the string you are looking for in the HTTP header, which of course cannot be found. A couple of rules to keep in mind: - one ACL line uses one condition (perhaps matched against a list of values, but not different conditions), multiple "-m" statements per line are not a thing, it will just be interpreted as a string. - a and/or condition in the ACL condition is not a thing, it will just be interpreted as a string. - and/or conditions are available when you are REFERING to acl's, NOT in the condition field of ACL itself The way to write this ACL is: acl requests-chrome hdr(sec-ch-ua) -m sub \"Not acl requests-chrome hdr(sec-ch-ua) -m sub HeadlessChrome acl requests-chrome hdr(user-agent) -m sub Chrome Or if those would be 3 different ACLs then you would actually use the or operator in the use-server directive: use-server hrx0-chrome if requests-chrome-acl1 or requests-chrome-acl2 or requests-chrome-acl3 See section 7.2 of the docs for some examples. Lukas

