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

Spring云网关路由URL模式配置

宓昂雄
2023-03-14

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

例如:

  • https://example.com/bar重定向到应用程序URL(http://example.app.url.com:8010/bar/)
  • https://example.com/bar/按预期工作(它维护实际的网关URL)

是否有避免第一种情况的配置?

我的配置如下:

spring:
  application:
    name: gateway-service
  cloud:
    gateway:
      routes:
        - id: bar-service
          uri: lb://BAR-SERVICE/
          predicates:
            - Path=/bar/**
        - id: other-service
          uri: lb://OTHER-SERVICE/
          predicates:
            - Path=/OTHER/**

补充信息:

  • 我有一个控制器在每个应用程序有'/'作为切入点(主页)
  • 如果需要,我可以使用java配置来代替

任何建议都将不胜感激!干杯

共有1个答案

齐鹏程
2023-03-14

您应该在网关配置中使用重写路径。以下是示例,希望对您有所帮助。

spring:
  application:
    name: gateway-service
  cloud:
    gateway:
      routes:
        - id: bar-service
          uri: lb://BAR-SERVICE/
          predicates:
            - Path=/bar/**
          filters:
            - RewritePath=/bar(?<segment>.*), /$\{segment}

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

  • 在下面的spring cloud gateway配置中,我试图用匹配路径结束,但它不能匹配路径: spring cloud gateway打印以下日志:

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

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

  • 我尝试将spring cloud gateway配置为转发到'/Consul/ui'或仅'/Consul'下的HashiCorp Consult的标准ui。然而,我不知道如何正确地做到这一点。Consul正在标准配置中运行。我在10.2.0.2上有一个外部ip地址和一个本地网络接口。我试过: 但是curl-l 127.0.0.1/consul/ui给了我一个500,因为根据日志,网关不匹配/con

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