我正在使用Traefik在Consul中注册的不同服务之间进行负载均衡.
我正在使用consul-catalog配置并通过在consul中定义服务时添加标记来覆盖其中一个服务的前端路由规则:
tags=[“traefik.frontend.rule=PathPrefixStrip:/api,Host:api.service.consul”]
Run Code Online (Sandbox Code Playgroud)
我期待两者/api并api.service.consul解决我的服务,但只是/api成功,但api.service.consul返回404错误.
换句话说,只考虑第一条规则.如果我切换标签:
tags=[“traefik.frontend.rule=Host:api.service.consul,PathPrefixStrip:/api”]
Run Code Online (Sandbox Code Playgroud)
然后api.servie.consul解析并/api返回404错误.
我相信文档建议支持此配置.有没有其他人通过consul标签定义多个规则取得了成功?
lde*_*dez 13
编辑: 从v1.7开始,对于consul-catalog,你可以使用:multiple-frontends-for-a-single-service
tags=[
"traefik.frontends.foo.rule=Host:api.service.consul",
"traefik.frontends.bar.rule=PathPrefixStrip:/api",
]
Run Code Online (Sandbox Code Playgroud)
答案可以在https://github.com/containous/traefik/issues/2417上看到:
,是OR(或只能匹配器内,例如:Host:foo.com,bar.com);是AND运算符(只能匹配器之间,例如:Host:foo.com;Path:/bar)因此,对于您的示例,请使用:
tags=["traefik.frontend.rule=Host:api.service.consul;PathPrefixStrip:/api"]
文档链接:
| 归档时间: |
|
| 查看次数: |
2998 次 |
| 最近记录: |