我们有2个域名指向我们的单个Zuul ELB。两个站点都使用了很多相同的服务,所以虽然我们的生产环境现在设置有点不同,但我们只有一个Zuul ELB。
我们如何根据域名将相同的路径路由到不同的服务?
我想结束这样的事情:
zuul:
host: http://a-zuul-host.elb.amazonaws.com:80
ignoredServices: '*'
routes:
app1:
path: /
domain: app1.com
serviceId: APP_1_SERVICE
app2:
path: /
domain: app2.com
serviceId: APP_2_SERVICE
这是否可能,或者我是否需要设置另一个zuul实例?
答案 0 :(得分:1)
以下是一种可能的解决方案:
以下是示例代码:
zuul:
ignored-patterns: /health, /info
routes:
wildcard:
path: /**
url: /**
stripPrefix: false
你要忽略 / health ,因为它将与通配符路由规则匹配,并且会引起问题 - 应该映射到其中一个弹簧执行器,所以我们忽略它,让一切都像以前一样处理。
对于域配置,这里有一个示例:
domain:
service_1:
domain-matcher: https://api_1.com:[0-9]+
url: https://service_1.com
service_2:
domain-matcher: https://api_2.com:[0-9]+
url: https://service_2.com
在您的过滤器中,现在只需根据匹配的域设置我们的主机。