0

我有一个相当简单的 Spring Cloud Netflix 设置。我们使用 Zuul 作为反向代理,使用 Eureka 进行服务发现和注册。我们有遗留服务,我们正在慢慢扼杀。我们有许多简单的服务,它们的端点配置如下:

{host}:{port}/{service-name}/**

所以现在当每个服务都注册到 eureka,并且随后有一个路由添加到 Zuul 时,zuul 端点看起来像这样:

{zuul-host}:{zuul-port}/{service-name}/{service-name}/**

我想阻止 Zuul 将前缀从 eureka 服务的路由 URI 中剥离出来,以便我的 zuul 端点看起来像这样:

{zuul-host}:{zuul-port}/{service-name}/**

并转发至:

{zuul-host}:{zuul-port}/{service-name}/** 

我希望以一种不必为每个服务添加配置的方式完成此操作。

我会认为这zuul.strip-prefix会成功,但事实并非如此。

当前 Zuul application.yml:

zuul:
  routes:
    oldservice:
      path: /oldservice/**
      url: http://oldservice-host:9080/api/v1/oldservice
  strip-prefix: false
eureka:
  client:
    serviceUrl:
      defaultZone: http://eureka-host:8761/eureka/

有人对我如何以这种方式配置zuul有建议吗?

4

1 回答 1

6

既然您正在向 eureka 注册服务,为什么不使用 service-id 进行路由,如下所示。service-id 是您的服务在 Eureka 中注册的 id。

zuul:
  routes:
     path: /oldservice/**
     service-id: oldservice
     strip-prefix: false
eureka:
  client:
    serviceUrl:
      defaultZone: http://eureka-host:8761/eureka/

对于您当前的情况,我将条带前缀移到了我的系统中的路由中,您可以尝试一下。

zuul:
  routes:
    oldservice:
      path: /oldservice/**
      url: http://oldservice-host:9080/api/v1/oldservice
      strip-prefix: false
eureka:
  client:
    serviceUrl:
      defaultZone: http://eureka-host:8761/eureka/
于 2016-08-19T20:14:52.083 回答