首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >哈代"use_backend“匹配命令

哈代"use_backend“匹配命令
EN

Server Fault用户
提问于 2014-11-27 07:03:49
回答 1查看 26.7K关注 0票数 9

我对HAProxy有个问题,下面是我haproxy.cfg的一个片段,

代码语言:javascript
运行
复制
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
  1. 当我访问www.mydom.com/a时,它使用eye2
  2. 当我访问www.mydom.com/a/b时,它使用eye1

但我认为所有的url都是以/a use eye2开头的。

我发现当像下面这样切换use_backend的顺序时,

代码语言:javascript
运行
复制
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的“匹配顺序规则”,也找不到谷歌的任何解释。

对此有什么想法吗?

EN

回答 1

Server Fault用户

发布于 2014-11-27 08:23:20

我不知道为什么它不适用于您,但是HAProxy文档指出:

可能有尽可能多的"use_backend“规则。所有这些规则都按照它们的声明顺序进行评估,第一个匹配的规则将分配后端。

来自:http://cbonte.github.io/haproxy-dconv/configuration-1.4.html#4-use_后端

查看您的代码:

代码语言:javascript
运行
复制
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

我期望得到以下结果:

代码语言:javascript
运行
复制
www.mydomin.com -> eye1
www.mydomin.com/a -> eye1
www.mydomin.com/a/b -> eye1

因为它们都匹配第一个use_backend

如果将配置更改为:

代码语言:javascript
运行
复制
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

我期望这些结果:

代码语言:javascript
运行
复制
www.mydomin.com -> eye1
www.mydomin.com/a -> eye2
www.mydomin.com/a/b -> eye2

因为只有URL 2和3匹配第一个use_backend

你能确认这不是在你的配置中发生的事情吗?

票数 12
EN
页面原文内容由Server Fault提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://serverfault.com/questions/647479

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档