首页
学习
活动
专区
圈层
工具
发布
34 篇文章
1
Spring Cloud Gateway的概念和背景
2
Spring Cloud Gateway的基本原理和特性
3
Spring Cloud Gateway 的架构和核心组件(一)
4
Spring Cloud Gateway 的架构和核心组件(二)
5
Spring Cloud Gateway环境搭建和配置(一)
6
Spring Cloud Gateway环境搭建和配置(二)
7
Spring Cloud Gateway路由的基本概念
8
Spring Cloud Gateway配置路由规则(一)
9
Spring Cloud Gateway配置路由规则(二)
10
Spring Cloud Gateway配置路由规则(三)
11
Spring Cloud Gateway路由规则的匹配和优先级(一)
12
Spring Cloud Gateway路由规则的匹配和优先级(二)
13
Spring Cloud Gateway过滤器配置
14
Spring Cloud Gateway过滤器配置-示例
15
Spring Cloud Gateway 过滤器的作用(一)
16
Spring Cloud Gateway 过滤器的作用(二)
17
Spring Cloud Gateway 过滤器的分类
18
Spring Cloud Gateway过滤器的执行顺序
19
Spring Cloud Gateway负载均衡(一)
20
Spring Cloud Gateway负载均衡-随机策略
21
Spring Cloud Gateway负载均衡-加权轮询策略
22
Spring Cloud Gateway负载均衡-加权随机策略
23
Spring Cloud Gateway限流(一)
24
Spring Cloud Gateway限流(二)
25
Spring Cloud Gateway高可用的实现
26
Spring Cloud Gateway网关安全性的保障(一)
27
Spring Cloud Gateway网关安全性的保障(二)
28
Spring Cloud Gateway 网关与微服务架构的整合(一)
29
微服务架构的基本概念和组件
30
Spring Cloud Gateway 的监控(一)
31
Spring Cloud Gateway 的监控(二)
32
Spring Cloud Gateway监控配置示例
33
Spring Cloud Gateway 的调试
34
使用 Spring Cloud Gateway 进行微服务架构的 API 网关实践

Spring Cloud Gateway配置路由规则(二)

路由规则的详细配置

除了路由的 ID 和目标 URI 之外,Spring Cloud Gateway 还支持多种其他的路由配置选项。下面我们将逐一介绍这些选项。

predicates

predicates 部分定义了路由匹配规则。Spring Cloud Gateway 支持多种不同的匹配规则,可以根据请求的路径、Host、Method、Header、Cookie 等信息来进行路由匹配。

以下是常见的路由匹配规则:

  • Path:基于请求的路径进行匹配。可以使用 Ant 风格的通配符,如 /user/**、/user/{id} 等。
  • Host:基于请求的 Host 进行匹配。可以使用 Ant 风格的通配符,如 *.example.com。
  • Method:基于请求的 HTTP 方法进行匹配。
  • Header:基于请求的 Header 进行匹配。可以匹配特定的 Header 值,如 X-Forwarded-For=192.168.1.1。
  • Query:基于请求的 Query String 进行匹配。可以匹配特定的参数值,如 foo=bar。

predicates 部分可以包含多个匹配规则,它们之间是与的关系。例如,下面的配置表示只有当请求的路径以 /api 开头,同时包含参数名为 foo,且参数值为 bar 时,路由规则才会匹配成功:

代码语言:javascript
复制
spring:
  cloud:
    gateway:
      routes:
        - id: my-route
          uri: http://localhost:8080
          predicates:
            - Path=/api/**
            - Query=foo=bar

filters

filters 部分定义了路由过滤器。路由过滤器是 Spring Cloud Gateway 中非常重要的一部分,它可以用于修改请求和响应、添加头信息、限流等。Spring Cloud Gateway 内置了多个过滤器,同时也支持自定义过滤器。

以下是常见的路由过滤器:

  • AddRequestHeader:添加请求头信息。
  • AddResponseHeader:添加响应头信息。
  • RewritePath:重写请求路径。
  • Hystrix:添加 Hystrix 断路器支持。
  • Retry:添加重试支持。
  • RateLimiter:添加限流支持。

filters 部分可以包含多个过滤器,它们之间是顺序执行的。例如,下面的配置表示先添加一个请求头信息 X-Request-Id,然后再将请求路径重写为 /api:

代码语言:javascript
复制
spring:
  cloud:
    gateway:
      routes:
        - id: my-route
          uri: http://localhost:8080
          predicates:
            - Path=/old-api/**
          filters:
            - AddRequestHeader=X-Request-Id,123
            - RewritePath=/old-api/(?<path>.*),/api/${path}

在上述配置中,首先会添加一个请求头信息 X-Request-Id,值为 123;然后将请求路径重写为 /api/{path},其中 {path} 是一个路径变量,它会被替换为原始请求路径中的内容。

order

order 属性用于定义路由规则的优先级。如果没有指定 order 属性,路由规则的优先级将按照它们在配置文件中出现的顺序来确定。如果指定了 order 属性,优先级将按照它的值来确定,数值越小的路由规则优先级越高。

例如,下面的配置中,路由规则 /service1/** 的优先级高于 /service2/**:

代码语言:javascript
复制
spring:
  cloud:
    gateway:
      routes:
        - id: service2
          uri: http://localhost:8082
          predicates:
            - Path=/service2/**
        - id: service1
          uri: http://localhost:8081
          predicates:
            - Path=/service1/**
          order: 0
下一篇
举报
领券