Маршрутизация Zuul при использовании услуг eureka

У меня достаточно простая установка Spring Cloud Netflix. Мы используем Zuul в качестве обратного прокси-сервера и Eureka для обнаружения служб и регистрации. у нас есть устаревшие сервисы, которые мы медленно подавляем. У нас есть много простых сервисов, конечные точки которых настроены следующим образом:

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

так что теперь, когда каждая служба зарегистрирована в eureka, а затем добавлен маршрут в Zuul, конечная точка zuul выглядит так:

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

Я хочу запретить Zuul удалять префикс из маршрутизируемых URI для сервисов eureka, чтобы мои конечные точки zuul выглядели так:

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

и вперед:

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

Я бы хотел, чтобы это было сделано таким образом, чтобы мне не приходилось добавлять конфиги для каждой службы.

Я бы предположил, что zuul.strip-prefix добился бы цели, но, похоже, это не так.

текущее приложение Zuul.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 таким образом?


person Kyle Chamberlin    schedule 16.08.2016    source источник
comment
Вы пытались определить префикс в zuul.prefix?   -  person Jeff    schedule 16.08.2016
comment
Префикс различен для каждой службы, этот префикс является именем каждой службы. поэтому в качестве обходного пути у нас в настоящее время есть записи в application.yml для каждой службы eureka, но это плохо масштабируется.   -  person Kyle Chamberlin    schedule 17.08.2016


Ответы (1)


Поскольку вы регистрируете свой сервис в eureka, почему бы не использовать идентификатор сервиса для маршрутизации, как показано ниже. идентификатор службы — это идентификатор, с которым ваша служба регистрируется в Eureka.

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/
person Grinish Nepal    schedule 19.08.2016
comment
не могли бы вы объяснить, что на самом деле делает stripPrefix? - person Alex; 31.10.2017
comment
@asdasdsdf Это должно помочь вам понять это cloud.spring.io/spring-cloud-static/Camden.SR3/ - person Grinish Nepal; 31.10.2017