【问题标题】:Spring Cloud Gateway : disable default routesSpring Cloud Gateway:禁用默认路由
【发布时间】:2019-10-29 03:05:24
【问题描述】:

我正在使用 Spring Cloud 来管理我的微服务。

出于安全原因,对于一个特定的微服务(命名为 ms_secure),我想使用自定义路由根据客户端 IP 选择特定的微服务版本。

我的网关配置如下所示:

spring:
  cloud:
    gateway:
      discovery:
        locator:
          enabled: true
      routes:
        - id: ms_secure_v1
          uri: lb://ms_secure_v1
          predicates:
            - Path=/ms_secure/**
          filters:
            - RewritePath=/ms_secure/(?<segment>.*), /$\{segment}
            - name: <my filter>
              args:
                xForwardedForHeaderName: X-Forwarded-For
                hosts:
                  - <IP1>
                  - <IP2>

        - id: ms_secure
          uri: lb://ms_secure_v2
          predicates:
            - Path=/ms_secure/**
          filters:
            - RewritePath=/ms_secure/(?<segment>.*), /$\{segment}
            - name: <my filter>
              args:
                xForwardedForHeaderName: X-Forwarded-For
                hosts:
                  - <IP3>
                  - <IP4>

当请求 /ms_secure 时:

  • IP1 和 IP2 将被重定向到 ms_secure_v1
  • IP3 和 IP4 将被重定向到 ms_secure_v2

我的问题是我的所有客户端也可以使用默认路由直接访问 ms_secure_v1 或 ms_secure_v2:

http:///ms_secure_v1/...

http:///ms_secure_v2/...

我尝试使用 SetStatus GatewayFilter 禁用这些路由:

        - id: setstatusstring_route
          uri: lb://ms-gateway
          predicates:
            - Path=/ms_secure_v**
          filters:
          - SetStatus=403

但是这条路线不匹配。

有没有办法在spring gateway中禁用这些默认路由?

【问题讨论】:

  • 为什么你的发现定位器是真的?
  • @spencergibb 我认为将此属性设置为 false 可以解决我的问题,但它似乎并没有改变任何东西。这个属性的目的是什么?
  • 根据发现中注册的服务动态创建路由。否则没有默认路由。所以看看你的路线,谓词是相同的Path=/ms_secure/**。所以它总是匹配第一个。
  • 它不会总是匹配第一个,因为过滤器会根据源 IP 选择正确的路由。关于发现定位器,我不明白,因为我禁用了它,默认路由仍然匹配
  • 谓词必须在过滤器运行之前匹配。

标签: spring routing spring-cloud spring-cloud-netflix spring-cloud-gateway


【解决方案1】:

以下根据注册的服务在网关中创建路由:

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

如果您不想这样做,请将其设置为 false(这是默认值)。

【讨论】:

    猜你喜欢
    • 2020-04-01
    • 2019-08-03
    • 2019-03-31
    • 2023-01-21
    • 2021-11-19
    • 1970-01-01
    • 1970-01-01
    • 2021-03-27
    • 2019-09-23
    相关资源
    最近更新 更多