gpt4 book ai didi

spring-cloud-gateway - Spring Cloud Gateway 和 DiscoveryClient 路由

转载 作者:行者123 更新时间:2023-12-03 16:39:19 33 4
gpt4 key购买 nike

我正在尝试将使用 spring-cloud-starter-netflix-zuul 的网关迁移到 Spring Cloud Gateway,但我遇到了请求路由问题。

我浏览了以下有关为 DiscoveryClient 路由配置谓词和过滤器的文档:

Configuring Predicates and Filters For DiscoveryClient Routes

这是我的 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 作为我的发现服务器(在一个单独的微服务中),我目前没有 Configuring Predicates and Filters For DiscoveryClient Routes 中概述的任何配置

如果我向 /accounts/*** 发出请求,我会收到 404 响应。如果我将 Spring Cloud Gateway 配置更改为以下内容并向 /account-service/*** 发出相同的请求,则会收到 403 Forbidden 响应:
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 一起使用时,是否需要按照 Configuring Predicates and Filters For DiscoveryClient Routes 中所述进行配置条目?

如果是这样,有人可以引用我的路线示例,对需要配置的内容提供更多解释/说明吗?对不起,如果我遗漏了什么,但从我读到的这个配置到底需要什么对我来说并不明显。例如, spring.cloud.gateway.discovery.locator.predicatesspring.cloud.gateway.discovery.locator.filters 是否配置为除了 spring.cloud.gateway.routes 谓词和过滤器之外或代替它们?

如果没有,我可能会缺少哪些其他配置?

我在 Spring Cloud Finchley.SR3/Spring Boot 2.0.8.RELEASE 上。

最佳答案

Spring Cloud Gateway 只是默认启用请求路由,您必须显式启用发现支持。尝试这个:

spring:
application:
name: gateway
cloud:
gateway:
discovery:
locator:
enabled: true # default false
routes:
- id: account-service-route
uri: lb://account-service #
predicates:
- Path=/account/**

现在您应该可以通过 http://<gateway>/account-service/account/** 访问您的服务

关于spring-cloud-gateway - Spring Cloud Gateway 和 DiscoveryClient 路由,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55130120/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com