可以在 path_beg 上做条件吗?

Possible to do conditions on a path_beg?

我想知道是否可以在 path_beg acl 中添加一些条件运算符。

例如我想做这样的事情:

acl myacl path_beg /samples { and !path_beg /samples/view }

对于位于 /samples 的任何内容都会触发 myacl,但如果路径为 /samples/view

则不会触发

这不能在 ACL 级别上定义,但是在规则中使用 ACL 时:

acl myacl path_beg /samples
acl myacl_exceptions path_beg /samples/view

use_backend mybackend if myacl !myacl_exceptions

如您所见,您可以定义两个单独的 ACL,然后使用它们来定义完整条件。请注意,在这种情况下,两个 ACL 在逻辑上组合在一起 AND。还有其他选项可以组合多个 ACL。详情请参考documentation

请注意,您也可以使用匿名 ACL。一个具有匿名 ACL 的等效示例可能如下所示:

acl myacl path_beg /samples
use_backend mybackend if myacl ! { path_beg /samples/view }