higress(envoy)路由匹配仅支持顺序匹配,不支持最长匹配对吗?
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
Higress,作为基于阿里内部两年多的 Envoy Gateway 实践沉淀的云原生网关,其路由匹配主要按顺序进行。当处理 HTTP 请求时,首先会将 host 或者 :authority 头与虚拟主机进行匹配,然后在该虚拟主机内按序检查每个路由条目。如果找到匹配项,则使用该路由并停止进一步的检查。此外,它还可以独立地按序检查虚拟主机中的每个虚拟集群。
然而,对于最长匹配原则,目前没有明确的证据表明 Higress 或 Envoy 路由匹配是否支持这一特性。因此,在配置路由时,建议密切关注官方文档和最佳实践,以确保正确地实现所需的路由匹配逻辑。
可以看一下文档
https://alidocs.dingtalk.com/document/edit?chInfo=im&utm_medium=im_card&utm_source=im&docKey=AXNkOMNWxWvElY74&dentryKey=NL4PAk4LiNOkPNKJ&type=d
此回答整理自钉群“Higress 社区交流 2 群”
Higress(基于Envoy)的路由匹配默认情况下是顺序匹配。这意味着,配置文件中的路由规则将按照它们在文件中出现的顺序进行评估。当一个请求到来时,Higress会从上到下检查每个路由规则,并使用第一个满足条件的规则。
尽管Higress本身不支持最长匹配策略,但可以通过一些技巧来实现类似的功能。例如,你可以创建多个路由规则,其中每个规则都具有特定的前缀,这些前缀按照长度递减的顺序排列。这样,更具体的路由(即具有较长前缀的路由)将在配置文件中较早出现,从而优先被匹配。
然而,请注意这种做法可能会导致配置文件变得复杂,并且可能无法达到与真正的最长匹配完全相同的效果。在某些情况下,你可能需要考虑是否可以重新组织你的路由规则,以适应Higress的顺序匹配机制,或者考虑使用其他解决方案来满足你的需求。
阿里云拥有国内全面的云原生产品技术以及大规模的云原生应用实践,通过全面容器化、核心技术互联网化、应用 Serverless 化三大范式,助力制造业企业高效上云,实现系统稳定、应用敏捷智能。拥抱云原生,让创新无处不在。