我创建了两个 AWS Beanstalk 环境,每个环境都有自己的应用程序版本。这些环境的 url 是https://beta.myserver.com/v1073和https://beta.myserver.com/v1084。 这些 url 指向负载均衡器。
现在我也有一个具有以下配置的 Zuul 实现。
zuul:
routes:
beta:
path: /api/**
serviceId: beta-root
strip-prefix: false
sensitive-headers: Cookie,Set-Cookie
ribbon:
eureka:
enabled: false
hystrix:
command:
default:
execution:
isolation:
thread:
timeoutInMilliseconds: 5000
beta-root:
ribbon:
listOfServers: https://beta.myserver.com
对我的应用程序的请求必须具有版本标头。我有一个检查此标头值的 Zuul“预”过滤器。目标是根据标头值路由请求。
我已经能够拦截请求,但无法从过滤器中路由它。代码片段如下。运行代码后,请求仍会尝试转到https://beta.myserver.com/api/ ...
@Override
public Object run() {
/* Logic to get version header etc */
/* Set the new route */
Map<String, ZuulRoute> routes = zuulProps.getRoutes();
ZuulRoute currentRoute = routes.get("beta-root");
currentRoute.setLocation("https://beta.myserver.com/v1073");
/* Refresh the route */
routeLocator.getRoutes();
logger.warn("Current Route:" + currentRoute.getLocation());
return null;
}
任何建议如何解决这个问题?