spring cloud gateway

获取本次请求命中的路由id

复制代码
Route route = exchange.getAttribute(ServerWebExchangeUtils.GATEWAY_ROUTE_ATTR);
route.getId()

全局过滤器GlobalFilter

通过实现Ordered接口 ,每个过滤器必须指定一个int类型order值,值越小,优先级越高,执行顺序越靠前。

复制代码
    @Override
    public int getOrder() {
        return Ordered.HIGHEST_PRECEDENCE;
    }

路由过滤器

等待

默认过滤器

复制代码
spring:
  cloud:
    gateway:
      routes:
        - id: user-service 
          uri: lb://userservice 
          predicates: 
          - Path=/user/**
      default-filters:      # 默认过滤器配置
        - AddRequestHeader=token, test  # 添加请求头

配置与routes平级,会对所有路由生效。

网关作用

反向代理(请求的转发)、路由和负载均衡、身份认证和权限控制、对请求的限流

GateWay路由配置

复制代码
spring:
  cloud:
    gateway:
      routes:         # 网关路由配置
        - id: user-service      # 路由id,自定义,只要唯一即可
          # uri: http://127.0.0.1:8081   # 路由的目标地址 (直接写死地址的方式,不推荐)
          uri: lb://userservice    # 路由的目标地址 lb是负载均衡,后面跟服务名称(推荐)
          predicates:       # 路由断言,判断请求是否符合路由规则的条件
            - Path=/user/**      # 按照路径匹配,以/user/开头的请求就符合要求
          filters:
            - StripPrefix=1 

1、路由id(id) 当前路由的唯一标识

2、路由目标(uri)

路由的目标地址,http代表固定地址,lb代表根据服务名称负载均衡。

3、路由断言(predicates)

判断路由的规则;被Predicate Factory读取并处理。

例如Path=/user/**是按照路径匹配,这个规则是由org.springframework.cloud.gateway.handler.predicate.PathRoutePredicateFactory类来处理。

断言工厂:

名称 说明 示例
After 是某个时间点后的请求 - After=2022-01-20T14:32:27.789-07:00Asia/Shanghai
Before 是某个时间点之前的请求 - Before=2022-04-13T15:14:47.433+08:00Asia/Shanghai
Between 是某两个时间点之前的请求 - Between=2021-01-20T17:42:47.789-07:00Asia/Shanghai, 2023-01-21T17:42:47.789-07:00Asia/Shanghai
Cookie 请求必须包含某些cookie - Cookie=chocolate
Header 请求必须包含某些header - Header=asd, cas
Host 请求必须是访问某个host(域名) - Host=baidu.com, jd.com
Method 请求方式必须是指定方式 - Method=GET,POST
Path 请求路径必须符合指定规则 - Path=/user/{params},/card/**
Query 请求参数必须包含指定参数 - Query=name, Jack
RemoteAddr 请求者的ip必须是指定范围 - RemoteAddr=192.168.1.1/24
Weight 权重处理
  • Path=/card/** 代表以card开头的多级路径请求 ,多级和一级请求都会生效

  • Path=/card/* 代表以card开头的一级路径请求 ,只有一级请求会生效

4、路由过滤器filters

请求顺序

过滤器执行顺序

默认过滤器-当前路由过滤器-用户自定义的全局过滤器

相关推荐
lazy H21 分钟前
【计算机网络】第 12 篇:IPv6 详解——地址格式、地址类型与双栈网络
网络·经验分享·后端·学习·计算机网络·408
2401_8685347826 分钟前
论纯IPv6(IPv6-Only)演进与地址规划设计与实施
服务器·网络
爱和冰阔落33 分钟前
【Linux网络】UDP 服务器怎么写?从 socket、bind 到 recvfrom/sendto,手写完整回显服务器
linux·运维·服务器·网络
明王明王1 小时前
PVE 装 OpenWrt:不改现有网络,用单臂路由让指定虚拟机上网
网络·openwrt
2301_780789661 小时前
SSL 卸载 + WAF + 抗 D:高防 CDN 一站式解决 HTTPS 性能与安全
网络·云原生·ddos
moonsims1 小时前
AiBrainBox-UGV 通 · 感 · 算 · 控一体化地面机器人边缘智能平台 规格书
大数据·网络·人工智能·无人机
CS_Zero1 小时前
计算机网络通信5:网络间通信、路由器与网络地址转换
网络·智能路由器
CQU_JIAKE1 小时前
10.28【A】
linux·运维·网络
爱和冰阔落1 小时前
【Linux网络】Socket 编程前要搞懂什么?从 IP、端口到字节序与 sockaddr,一次理清网络通信基础
linux·运维·网络·tcp/ip
weixin_417396832 小时前
酒店IPTV需要什么资质?内容授权与工程资质两条线要分开看
网络·技术·网络运维·酒店iptv·组播排查