将所有未解决的端点重定向到特定的注册服务

时间:2019-11-12 16:29:55

标签: spring cloud spring-cloud gateway spring-cloud-gateway

我正在尝试将所有端点(服务发现未解决)重定向到特定的url / lb。

我有一个配置为通过Eureka解析每个/api请求的Spring Cloud Gateway服务器。

spring:
  cloud:
    gateway:
      discovery:
        locator:
          lowerCaseServiceId: true
          enabled: true
          predicates:
            - name: Path
              args:
                pattern: "'/api/'+serviceId.toLowerCase()+'/**'"
          filters:
            - name: RewritePath
              args:
                regexp: "'/api/' + serviceId.toLowerCase() + '/(?<remaining>.*)'"
                replacement: "'/${remaining}'"

在Eureka中也部署和注册了另一个前端服务。我的目标是将其他所有内容路由到该前端服务。我尝试添加以下路线来做到这一点:

spring:
  cloud:
    gateway:
      discovery:
        locator:
          lowerCaseServiceId: true
          enabled: true
          predicates:
            - name: Path
              args:
                pattern: "'/api/'+serviceId.toLowerCase()+'/**'"
          filters:
            - name: RewritePath
              args:
                regexp: "'/api/' + serviceId.toLowerCase() + '/(?<remaining>.*)'"
                replacement: "'/${remaining}'"
      routes:
        - id: frontend
          order: -1
          uri: lb://frontend
          predicates:
            - name: Path
              args:
                pattern: "^((?!api).)*$"

但是没有用。

是否有关于如何将eureka中未发现的所有其他路由路由到特定服务/ URL的想法?

感谢您的帮助

1 个答案:

答案 0 :(得分:0)

spring:
  cloud:
    gateway:
      discovery:
        locator:
          lowerCaseServiceId: true
          enabled: true
          predicates:
            - name: Path
              args:
                pattern: "'/api/'+serviceId.toLowerCase()+'/**'"
          filters:
            - name: RewritePath
              args:
                regexp: "'/api/' + serviceId.toLowerCase() + '/(?<remaining>.*)'"
                replacement: "'/${remaining}'"
      routes:
        - id: frontend
          order: 10
          uri: lb://frontend
          predicates:
            - Path=/**