Spring 云网关:禁用默认路由
Spring Cloud Gateway : disable default routes
我正在使用 spring 云来管理我的微服务。
出于安全原因,对于一个特定的微服务(将其命名为 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 网关中禁用这些默认路由?
以下根据注册的服务在网关中创建路由:
spring:
cloud:
gateway:
discovery:
locator:
enabled: true
如果您不想这样做,请将其设置为 false(默认设置)。
我正在使用 spring 云来管理我的微服务。
出于安全原因,对于一个特定的微服务(将其命名为 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 网关中禁用这些默认路由?
以下根据注册的服务在网关中创建路由:
spring:
cloud:
gateway:
discovery:
locator:
enabled: true
如果您不想这样做,请将其设置为 false(默认设置)。