Spring Cloud Gateway:禁用默认路由

时间:2019-06-14 13:04:25

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

我正在使用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中禁用这些默认路由?

1 个答案:

答案 0 :(得分:1)

以下内容基于注册的服务在网关中创建路由:

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

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