当前位置: 首页 > 知识库问答 >
问题:

Spring云网关和DiscoveryClient路由

阎晋
2023-03-14

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

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作为我的Discovery服务器(在一个单独的微服务中),并且我目前没有任何配置,如配置DiscoveryClient路由的谓词和过滤器中所述

如果我向/accounts/***发出请求,我将收到一个404响应。如果我将Spring Cloud网关配置更改为如下所示,并向/account-service/***发出相同的请求,我将收到403禁止响应:

spring:
  cloud:
    gateway:
      routes:
        - id: account-service-route
          uri: lb://account-service
          predicates:
          - Path=/account-service/**

如果没有,我可能还缺少哪些配置?

我正在使用Spring Cloud Finchley.sr3/Spring Boot 2.0.8.Release。

共有1个答案

东方镜
2023-03-14

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:// /account-service/account/** 访问您的服务

 类似资料:
  • 使用spring-Cloud网关2.0.0. M5,我在配置文件(application.yml)中定义路由。我试图通过调用POST来更新这些路由 /application/gateway/refresh. 修改后的路由或新路由不会被刷新,即使我看到(带有断点)实际上执行了刷新例程。 当在配置文件中定义路由时,刷新应该工作吗?我错过了什么? 用例是在spring配置服务器中定义的路由。

  • 我们使用的实现以编程方式实现路由。我们有两个服务,它们应该在相同的路由路径上注册,如果另一个不存在,其中一个将作为后备。具有特定路径的首选路由是: 因此,当调用时,应该使用第一条路由,而当调用时,应该使用第二条路由。 问题是,即使是路线上的order属性似乎也不能解决这个问题;目前,我们发现没有可能设置这种路线的顺序/优先级。这是intender吗?

  • 我正在使用Spring Cloud(hoxton.sr10)和Spring Boot(2.2.6.release) 我在尤里卡服务器8761注册了我的服务 gateway mainClass java

  • 我有一个带有一些endpoint的anexo API,比如: 如何将Spring Cloud Gateway与这些endpoint一起使用?

  • 我有一个Spring云网关、一个eureka服务注册中心和两个微服务器。我使用http://localhost:8081/auth直接向sevice发送请求没有问题。当我想使用网关http://localhost:8080/auth时,我总是得到404错误响应。服务和网关都连接到eureka服务器。下面是我的代码: 网关 Application.Properties: 主要: 主要: 我已经遍历了

  • 我已经用Eureka发现服务实现了Spring Cloud Gateway,一切都很好,但我看到了一些我在编写URL时不知道如何处理的事情,如果我没有在URL的末尾放一个/,Gateway会直接使用其实际URL(在Eureka注册)重定向到应用程序。 例如: https://example.com/bar重定向到应用程序URL(http://example.app.url.com:8010/bar