我有一个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都以/ 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的“匹配规则”,并且找不到任何来自google的解释。
任何想法呢?
我不知道为什么它不适合你,但HAProxy文档指出:
根据需要可能有许多“use_backend”规则。 所有这些规则都以它们的声明顺序进行评估,匹配的第一个规则将分配后端。
来自: http : //cbonte.github.io/haproxy-dconv/configuration-1.4.html#4-use_backend
看你的代码:
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
。
如果您将configuration更改为:
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
。
你能确认这不是在你的configuration中发生了什么?