Я пытаюсь перенести шлюз, работающий с использованием spring-cloud-starter-netflix-zuul
, на Spring Cloud Gateway, и у меня возникают проблемы с маршрутизацией запросов.
Я наткнулся на следующую документацию по настройке предикатов и фильтров дляМаршруты DiscoveryClient:
Настройка предикатов и фильтров для маршрутов DiscoveryClient
Вот фрагмент из моей конфигурации Netflix Zuul:
zuul:
routes:
account-service: /accounts/**
А вотФрагмент из конфигурации Spring Cloud Gateway, где я пытаюсь настроить эквивалентный маршрут:
spring:
cloud:
gateway:
routes:
- id: account-service-route
uri: lb://account-service
predicates:
- Path=/accounts/**
Я использую Spring Cloud Eureka в качестве сервера обнаружения (в отдельном микросервисе), и в настоящее время у меня нетлюбая конфигурация, описанная в Настройка предикатов и фильтров для маршрутов DiscoveryClient
Если я отправлю запрос на /accounts/***
, я получу ответ 404.Если я изменю конфигурацию Spring Cloud Gateway на следующую и выдам тот же запрос на /account-service/***
, я получу 403 Запрещенный ответ:
spring:
cloud:
gateway:
routes:
- id: account-service-route
uri: lb://account-service
predicates:
- Path=/account-service/**
Я подозреваю, что это связано с поведением по умолчаниюSpring Cloud Gateway относительно того, как настроены маршруты DiscoveryClient, но я не вижу достаточно в журналах, чтобы указать мне правильное направление.
Итак, мой вопрос заключается в следующем: при использовании Spring Cloud Gateway сSpring Cloud Eureka, необходимо ли вносить записи конфигурации, как указано в Настройка предикатов и фильтров для маршрутов DiscoveryClient ?
Если это так, может ли кто-нибудь дать больше объяснения / ясности относительно того, что необходимо настроить, обращаясь к моим примерам маршрутов?Извините, если я что-то упустил, но из того, что я прочитал, для меня не очевидно, что именно нужно для этой конфигурации.Например, настроены ли spring.cloud.gateway.discovery.locator.predicates
и spring.cloud.gateway.discovery.locator.filters
в дополнение или вместо предикатов и фильтров spring.cloud.gateway.routes
?
Если нет, какие еще конфигурации я могу пропустить?
Я нахожусь в Spring Cloud Finchley.SR3 / Spring Boot 2.0.8.RELEASE.