acl的haproxy嵌套条件

时间:2018-07-11 07:28:49

标签: haproxy

我需要嵌套的ACL条件

acl route1 hdr_sub(host) -i abc.com hdr_sub(host) -i xyz.com 
acl route2 path_beg /m1
acl route3 path_beg /m2


use backend back1 if route1 (route2 or route3)

// essentially  
route1 AND (route2 OR route3)

匹配后端。与此等效的正确HA代码是什么?

2 个答案:

答案 0 :(得分:0)

单个ACL中的规则经过“或”运算,因此,您可以将route3acl route2 path_beg /m1 acl route2 path_beg /m2 use backend back1 if route1 route2 规则与此结合起来:

||

条件还支持a b || c运算符,但不支持括号优先级分组,因此(a and b) or (c)的意思是use backend back1 if route1 route2 || route1 route3 ,这不等于您想要的...……如果您不这样做不想像上面那样组合ACL,您将需要此...

use backend back1 if route1 route2
use backend back1 if route1 route3

...这不是很直观。

或者这个:

Style

答案 1 :(得分:0)

请参阅HA手册的第 7.2节。使用ACL形成条件

在ACL中声明的条件由隐式逻辑AND分组。

关于path_beg,这比较简单: 您可以声明一个ACL来对这两个条件(路径1或路径2)进行分组 就是

acl path_m1_or_m2 path_beg /m1 /m2
use backend back1 if hostX path_m1_or_m2