Spring 云网关路由 URL 模式配置
Spring Cloud Gateway Route URL pattern configuration
我已经使用 Eureka 发现服务实现了 Spring 云网关,一切正常,但我在编写 URL 和如果我不在 URL 的末尾放置一个 /,网关会直接使用其实际的 URL(在 Eureka 中注册)重定向到应用程序。
例如:
- https://example.com/bar redirect to the app 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 配置
如有任何建议,我们将不胜感激!干杯!
您应该在网关配置中使用 RewritePath。以下是示例,希望对您有所帮助。
spring:
application:
name: gateway-service
cloud:
gateway:
routes:
- id: bar-service
uri: lb://BAR-SERVICE/
predicates:
- Path=/bar/**
filters:
- RewritePath=/bar(?<segment>.*), /$\{segment}
我已经使用 Eureka 发现服务实现了 Spring 云网关,一切正常,但我在编写 URL 和如果我不在 URL 的末尾放置一个 /,网关会直接使用其实际的 URL(在 Eureka 中注册)重定向到应用程序。
例如:
- https://example.com/bar redirect to the app 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 配置
如有任何建议,我们将不胜感激!干杯!
您应该在网关配置中使用 RewritePath。以下是示例,希望对您有所帮助。
spring:
application:
name: gateway-service
cloud:
gateway:
routes:
- id: bar-service
uri: lb://BAR-SERVICE/
predicates:
- Path=/bar/**
filters:
- RewritePath=/bar(?<segment>.*), /$\{segment}