我在以下文件中定义了一组前端:
acl abc_f path_beg /abc/
use_backend abc if abc_f
现在,我想导演一部领域到后端,并且不应对其应用任何上述 ACL 条件。我想添加:
acl host_xyz hdr(host) -i xyz.com
有没有什么方法可以“嵌套” ACL 条件,以便它只发生在特定域上,而不会发生在新域上?
或者我是否必须修改每个 ACL 规则才能考虑域?
答案1
您可以一次评估多个 ACL,但请记住,HAProxy 使用条件的短路评估(在遇到错误条件时停止评估)。
如果我理解正确的话,你希望将域名 xyz.com 排除在外use_backend abc if abc_f
(即你不想将对域名 xyz.com 的请求直接发送到后端美国广播公司)。为此,您只需添加一个额外的条件即可use_backend abc指示:
acl abc_f path_beg /abc/
acl host_xyz hdr(host) -i xyz.com
# Use backend "abc" if ACL "abc_f" is true and if ACL "host_xyz" is not true
use_backend abc if abc_f !host_xyz