我对HAProxy有个问题,下面是我haproxy.cfg的一个片段,
acl url_a path_beg /a
acl dom_eye hdr_dom(host) -i www.mydomin.com
use_backend eye1 if dom_eye
use_backend eye2 if dom_eye url_a但我认为所有的url都是以/a use eye2开头的。
我发现当像下面这样切换use_backend的顺序时,
acl url_a path_beg /a
acl dom_eye hdr_dom(host) -i www.mydomin.com
use_backend eye2 if dom_eye url_a
use_backend eye1 if dom_eye对我起作用了。
但我不明白Haproxy的“匹配顺序规则”,也找不到谷歌的任何解释。
对此有什么想法吗?
发布于 2014-11-27 08:23:20
我不知道为什么它不适用于您,但是HAProxy文档指出:
可能有尽可能多的"use_backend“规则。所有这些规则都按照它们的声明顺序进行评估,第一个匹配的规则将分配后端。
来自:http://cbonte.github.io/haproxy-dconv/configuration-1.4.html#4-use_后端
查看您的代码:
acl url_a path_beg /a
acl dom_eye hdr_dom(host) -i www.mydomin.com
use_backend eye1 if dom_eye
use_backend eye2 if dom_eye url_a我期望得到以下结果:
www.mydomin.com -> eye1
www.mydomin.com/a -> eye1
www.mydomin.com/a/b -> eye1因为它们都匹配第一个use_backend。
如果将配置更改为:
acl url_a path_beg /a
acl dom_eye hdr_dom(host) -i www.mydomin.com
use_backend eye2 if dom_eye url_a
use_backend eye1 if dom_eye我期望这些结果:
www.mydomin.com -> eye1
www.mydomin.com/a -> eye2
www.mydomin.com/a/b -> eye2因为只有URL 2和3匹配第一个use_backend。
你能确认这不是在你的配置中发生的事情吗?
https://serverfault.com/questions/647479
复制相似问题