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

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

我使用同一个 HAProxy 实例从我的域提供多个服务,分别位于domain.com/s1/domain.com/s2/。我希望仅在满足某些条件时执行某些操作(包括 ACL 匹配)之内 s2. 使用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/,如果我知道绝大多数请求都是针对的,这就很浪费了s1

有没有办法可以说“仅当 acl匹配时才评估path_1或模式”?path_2service_2

请注意,这不是想要满足AND两个条件的情况;我希望除非第一个条件匹配,否则第二个条件acl甚至不会被计算。这在 HAProxy 中可能吗?

答案1

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,然后在操作上设置条件和/或否定条件。

相关内容