我的 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
Run Code Online (Sandbox Code Playgroud)
但我希望所有的 url 都以/a开头,使用 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
Run Code Online (Sandbox Code Playgroud)
它对我有用。
但是我不明白Haproxy的“匹配顺序规则”,也找不到谷歌的任何解释。
对此有何想法?
Luc*_*oed 13
我不知道为什么它对你不起作用,但 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
Run Code Online (Sandbox Code Playgroud)
我希望得到以下结果:
www.mydomin.com -> eye1
www.mydomin.com/a -> eye1
www.mydomin.com/a/b -> eye1
Run Code Online (Sandbox Code Playgroud)
因为他们都匹配第一个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
Run Code Online (Sandbox Code Playgroud)
我希望这些结果:
www.mydomin.com -> eye1
www.mydomin.com/a -> eye2
www.mydomin.com/a/b -> eye2
Run Code Online (Sandbox Code Playgroud)
因为只有 URL 2 和 3 匹配第一个use_backend
.
您能否确认这不是您的配置中发生的情况?
归档时间: |
|
查看次数: |
21510 次 |
最近记录: |