Haproxy

匹配萬用字元域,除了 HAproxy 中的兩個特定子域

  • June 21, 2018

我有一個看起來像這樣的規則:

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 和 unless 。

我將如何做到這一點?

為了清楚起見,添加了換行符:

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只能用在表達式的開頭。

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

引用自:https://serverfault.com/questions/917464