这是一个可能的解决方案:
>在zuul配置中添加通配符路由规则以将任何请求路由到/ **,并禁用此路由规则的剥离前缀.
>添加路由类型的新路由过滤器并使其在RibbonRoutingFilter之前运行,因为此过滤器中将发生无效主机/ **的异常.
>在zuul yaml配置中为您的不同域添加域配置.
>使用过滤器和域配置根据域更改主机.
这是一个示例代码:
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
在您的过滤器中,现在只需根据匹配的域设置我们的主机.