Spring Cloud Zuul не перезаписывает URL-адреса в ответе серверной службы

Я настроил локальную среду с парой сервисов Spring Cloud (конфигурация, реестр сервисов и Zuul). Прокси правильно предоставляет сервисы, используя сопоставление по умолчанию:

2015-11-23 14:06:30.184  INFO 11532 --- [           main] o.s.c.n.zuul.web.ZuulHandlerMapping      : Mapped URL path [/api-proxy/**] onto handler of type [class org.springframework.cloud.netflix.zuul.web.ZuulController]
2015-11-23 14:06:30.184  INFO 11532 --- [           main] o.s.c.n.zuul.web.ZuulHandlerMapping      : Mapped URL path [/service-discovery/**] onto handler of type [class org.springframework.cloud.netflix.zuul.web.ZuulController]
2015-11-23 14:06:30.184  INFO 11532 --- [           main] o.s.c.n.zuul.web.ZuulHandlerMapping      : Mapped URL path [/config-service/**] onto handler of type [class org.springframework.cloud.netflix.zuul.web.ZuulController]
2015-11-23 14:06:30.184  INFO 11532 --- [           main] o.s.c.n.zuul.web.ZuulHandlerMapping      : Mapped URL path [/circuitbreaker-collector/**] onto handler of type [class org.springframework.cloud.netflix.zuul.web.ZuulController]
2015-11-23 14:06:30.184  INFO 11532 --- [           main] o.s.c.n.zuul.web.ZuulHandlerMapping      : Mapped URL path [/circuitbreaker-dashboard/**] onto handler of type [class org.springframework.cloud.netflix.zuul.web.ZuulController]

Проблема, которую я вижу, заключается в том, что когда я перехожу к http://localhost/service-discovery/, я вижу Панель инструментов Eureka, но ни один из связанных статических ресурсов не загружается. Браузер показывает такие ошибки, как:

http://localhost/eureka/css/wro.css Failed to load resource: the server responded with a status of 404 (Not Found)
http://localhost/eureka/js/wro.js Failed to load resource: the server responded with a status of 404 (Not Found)
service-discovery:223 Uncaught ReferenceError: $ is not defined
http://localhost/eureka/css/wro.css Failed to load resource: the server responded with a status of 404 (Not Found)

Есть ли способ обойти эту проблему? Из того, что я могу сказать, панель инструментов Eureka не использует относительный путь при загрузке ресурсов и вместо этого предполагает, что приложение развернуто в контексте корневого сервлета.

ОБНОВЛЕНИЕ Я понял, что пропустил проблему. Я прокомментировал эту тему, но решил поднять ее в основной пост. Проблема в том, что Zuul делает внутренний запрос от имени клиента. Когда Zuul делает этот запрос, ответ HTML содержит URL-адреса, которые относятся к пути контекста, настроенному для Eureka. Обычно прокси-сервисы справляются с этим, переписывая любые URL-адреса, найденные в ответе, чтобы они имели правильный базовый контекст в отношении того, как прокси-сервер раскрывает его. Есть ли что-то подобное для Зуула?

Изменена тема для лучшего описания проблемы.


person Shawn Clark    schedule 23.11.2015    source источник
comment
Да, вы можете изменить контекст сервера eureka и указать zuul не удалять префиксы. Но я задаюсь вопросом, почему вы хотите, чтобы панель управления обслуживалась через zuul.   -  person spencergibb    schedule 24.11.2015
comment
Я понимаю, что в обычных ситуациях это не будет раскрыто через Зуул. Я просто играл со связью между службами с прокси-сервером Zuul.   -  person Shawn Clark    schedule 25.11.2015
comment
Способ, которым это обычно управляется для других служб прокси-типа, заключается в том, что URL-адреса в ответе от серверной службы переписываются так, чтобы контекст из Zuul применялся к этим URL-адресам. Это то, что предлагает Zuul, и это рекомендуемый подход при использовании Zuul?   -  person Shawn Clark    schedule 25.11.2015
comment
Похоже, эта проблема была поднята в контексте Spring Cloud Zuul: github.com /spring-cloud/spring-cloud-netflix/issues/8   -  person Shawn Clark    schedule 25.11.2015


Ответы (1)


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

registry:
  path: /registry/**
  url: http://localhost:8006/
  strip-prefix: true
registry-static:
  path: /eureka/**
  url: http://localhost:8006/eureka/
person troy    schedule 15.01.2018