如何在HAProxy中设置嵌套的acl规则?

我使用相同的HAProxy实例从域中提供多个服务,位于domain.com/s1/domain.com/s2/ 。 只有 s2 满足某些条件的情况下,才想进行一些操作(包括ACL匹配)。 用acl就好

 acl service_1 path_beg /s1/ acl service_2 path_beg /s2/ acl service_1_path_1 path_beg /s2/path1/ acl service_1_path_2 path_beg /s2/path2/ 

将导致所有的请求被匹配为s2/path1//s2/path2/ patterns,如果我知道绝大多数请求是针对s1 ,这是浪费的。

有没有一种方法可以说“仅在acl service_2匹配时才评估path_1path_2模式”?

请注意,这不是一个想要AND两个条件的情况; 我想第二个acl甚至不计算,除非第一个匹配。 这甚至可能在HAProxy?

HAProxy多条件示例

这是我使用的一个例子:

 acl bot_ok path_end txt acl bot_ok url_reg ^/$ acl derpy3 hdr_sub(user-agent) -i bash curl wget slack acl derpy3 req.ver !1.1 http-request silent-drop if derpy3 !bot_ok 

让机器人和/或使用1.1以外的http协议, 如果他们击中/.txt文件。

我们定义了多个acl,然后设置行动的条件和/或否定条件。