匹配 HAproxy 中除两个特定子域之外的通配符域

匹配 HAproxy 中除两个特定子域之外的通配符域

我有一条如下规则:

redirect scheme https code 301 if { hdr_end(Host) -i mydomain.live otherdomian.org } !{ ssl_fc }

但我希望规则忽略 sub1.otherdomain.org 和 sub2.otherdomain.org

我想做类似的事情:

redirect scheme https code 301 if { hdr_end(Host) -i mydomain.live otherdomian.org } unless { hdr_beg(host) -i sub1 sub2 } !{ ssl_fc }

但是我的语法不正确,我想我只需要以某种方式结合 if 和 except 。

我该如何实现这个目标?

答案1

为了清晰起见添加了换行符:

redirect scheme https code 301 
  if { hdr_end(Host) -i .mydomain.live .otherdomian.org } 
     !{ hdr_beg(host) -i sub1 sub2 } 
     !{ ssl_fc }

用通俗的语言来说,情况是这样的:

if (a) and (not (b)) and (not (c))

if并且unless只能用在表达式的开头。

答案2

acl a1 hdr_beg(host) -i sub1.otherdomain.org sub2.otherdomain.org
acl a2 hdr_end(Host) -i mydomain.live otherdomain.org
redirect scheme https code 301 if !a1 a2

相关内容