在Zuul过滤器中处理不同的URL模式

时间:2018-08-07 18:14:46

标签: spring-boot microservices spring-cloud gateway netflix-zuul

我有以下两种类型的URL模式。

  1. / gateway / secure / api / user / getUser
  2. / gateway / nonsecure / api / user / getUser

(zuul网关应用程序的上下文根是gateway

使用zuul过滤器,我正在尝试基于securenonsecure URL模式实现两种不同的逻辑。我已经写了一个预过滤器,似乎对于上面的URL模式甚至没有执行该过滤器。我可以看到网关抛出404。当我尝试在没有securenonsecure的情况下访问微服务时,其工作将按预期进行。下面是我到目前为止所做的属性更改。

下游微服务的上下文根是api /用户

zuul.prefix=/secure
zuul.routes.user.path=/api/user/**
zuul.routes.user.service-id=user

zuul.prefix=/nonsecure
zuul.routes.user.path=/api/user/**
zuul.routes.user.service-id=user

我已经尝试过通过给zuul.prefix来尝试,并且似乎前缀已设置为全局且不能仅适用于特定路由。我该如何实现?任何人都可以请教。谢谢

1 个答案:

答案 0 :(得分:0)

如您所述,zuul.prefix属性会影响所有映射,并且只能定义一次。因此,删除zuul.prefix属性,并为每个zuul.routes.*.path属性添加相应的前缀:

zuul.routes.user.path=/secure/api/user/**
zuul.routes.user.service-id=user

zuul.routes.user.path=/nonsecure/api/user/**
zuul.routes.user.service-id=user

请注意,根据documentation

  

zuul.stripPrefix仅适用于zuul.prefix中设置的前缀。它对给定路由的path中定义的前缀没有任何影响。