Gateway与Zuul路由规则

GateWay路由规则

spring:
  cloud:
    gateway:
      routes:
        - id: product_router
          uri: lb://mall-product
          predicates:
          - Path=/app/product/**
          filters:
          - RewritePath=/app/(?<segment>/?.*), /$\{segment}
  1. 接受请求路径: Http://localhost:8070/app/product/code/a
  2. predicate 判断,请求路径改为:Http://mall-product/app/product/code/a
  3. 过滤器重写,请求路径:Http://mall-product/product/code/a

Zuul路由规则

zuul:
  routes :
    users:
      path: /app/product/**
      serviceId: product-service
  1. 接受请求路径: Http://localhost:8070/app/product/code/a
  2. 转换路径: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}  具体看上开头的配置信息

posted @ 2024-04-09 10:04  之士咖啡  阅读(24)  评论(0编辑  收藏  举报