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

Spring云网关默认路由不起作用

钱钊
2023-03-14

我想通过在eureka(应用程序名称)注册的服务ID在我的Spring云网关(无zuul)启用默认路由,但我总是得到404错误。

在我的聊天服务的引导程序中。yml我已经定义了应用程序名

spring:
  application:
    name: chat-service

在应用程序属性中:

eureka:
  instance:
    preferIpAddress: true
  client:
    healthcheck:
      enabled: true
    serviceUrl:
      defaultZone: http://${EUREKA_HOST:localhost}:${EUREKA_PORT:8761}/eureka/

当我进入eureka的仪表板时,我可以看到我的聊天服务和网关。

Eureka在网关应用程序中的配置与聊天服务相同,但我也有以下配置:

spring:
  application:
    name: gateway
  cloud:
    gateway:
      discovery:
        locator:
          enabled: true

接下来,我还尝试添加显式路由,但这并不起作用,但如果我有发现定位器启用设置为true,这应该不需要对吗?

  routes:
    - id: chat-service-route
      uri: lb://chat-service
      predicates:
        - Path=** 

我创建了测试endpoint,并尝试直接通过聊天服务和网关调用该endpoint。直接呼叫工作正常,因此问题将与路由有关。

@RestController
@RequestMapping
public class TestController {

    @GetMapping
    public String test() {
        return "chat-service ready";
    }
}

我做错了什么?我有点绝望。我正在使用SpringBoot2.2.2和Hoxton。发布云依赖项版本

共有1个答案

梁丘霖
2023-03-14

尝试删除显式路由并将以下属性添加到应用程序yml。这对我有用。

spring:
  cloud:
    gateway:
      discovery:
        locator:
          lower-case-service-id: true
 类似资料:
  • 我正在使用Spring Cloud(hoxton.sr10)和Spring Boot(2.2.6.release) 我在尤里卡服务器8761注册了我的服务 gateway mainClass java

  • 我正在使用Spring Cloud。我的Spring boot应用程序、、和中有四个服务。我尝试使用API Gateway调用和。当我从API Gateway调用My时,它可以正常工作,但不起作用。当我尝试获取时,我收到未找到错误。我是Spring Cloud的新人。这是我的代码。 下面是我的网址,最后一个网址是404 实体 学院控制员 应用程序. yml 学生管理员实体 应用程序. yml 应用

  • 我试图将使用工作的网关迁移到Spring Cloud网关,但遇到了请求路由问题。 下面是Spring Cloud Gateway配置的一个片段,我试图在其中配置一个等效的路由: 我使用Spring Cloud Eureka作为我的Discovery服务器(在一个单独的微服务中),并且我目前没有任何配置,如配置DiscoveryClient路由的谓词和过滤器中所述 如果我向发出请求,我将收到一个40

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

  • 我使用以下技术设计了一个微服务原型 尤里卡服务器(Discovery Server) Spring boot(后端服务) Spring Cloud API网关 上述服务正在启动,和在服务器中注册 当我向gate way发送请求时,它显示以下错误 如何解决上述问题。

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