Gateway与Zuul路由规则
GateWay路由规则
spring:
cloud:
gateway:
routes:
- id: product_router
uri: lb://mall-product
predicates:
- Path=/app/product/**
filters:
- RewritePath=/app/(?<segment>/?.*), /$\{segment}
- 接受请求路径:
Http://localhost:8070/app/product/code/a
- predicate 判断,请求路径改为:
Http://mall-product/app/product/code/a
- 过滤器重写,请求路径:
Http://mall-product/product/code/a
Zuul路由规则
zuul:
routes :
users:
path: /app/product/**
serviceId: product-service
- 接受请求路径:
Http://localhost:8070/app/product/code/a
- 转换路径:
Http://product-service/code/a
两者区分
- Zuul:路径匹配上后,将匹配内容认为服务名称而删除,然后将剩余请求路径发送到指定服务器上
- GateWay: 路径匹配上后,不做任何处理,直接将请求路径发送到指定服务器上
如果想让GateWay的路由规则与Zuul相似,可以使用此方式:
1. StripPrefix
spring:
cloud:
gateway:
default-filters:
- StripPrefix=1
规则:
StripPrefix=1 :/app/product/code -> /product/code
StripPrefix=2 :/app/product/code -> /code
2. 使用过滤器的重写功能
filters.RewritePath=/app/(?<segment>/?.*), /$\{segment} 具体看上开头的配置信息