gateway routes规则

1、After Route

所有匹配的请求必须在这个时间点之后

spring:cloud:gateway:routes:- id: after_routeuri: https://example.orgpredicates:- After=2022-05-23T19:52:33.736+08:00[Asia/Shanghai] #时间格式为ZonedDateTime.now()

2、Before Route

所有匹配的请求必须在这个时间点之前

spring:cloud:gateway:routes:- id: before_routeuri: https://example.orgpredicates:- Before=2021-05-23T19:52:33.736+08:00[Asia/Shanghai]

3、Between Route

所有匹配的请求必须在这两个时间点之内

spring:cloud:gateway:routes:- id: between_routeuri: https://example.orgpredicates:- Between=2022-05-23T19:52:33.736+08:00[Asia/Shanghai], 2023-05-23T19:52:33.736+08:00[Asia/Shanghai] #两个时间点之间不能用空格隔开

4、Cookie Route

接收Cookie参数,且值需要与正则表达是匹配

spring:cloud:gateway:routes:- id: cookie_routeuri: https://example.orgpredicates:- Cookie=chocolate, ch.p

5、Header Route

在请求Header中,需要带有X-Request-Id的参数,且值需要和正则表达式匹配

spring:cloud:gateway:routes:- id: header_routeuri: https://example.orgpredicates:- Header=X-Request-Id, \d+

6、Host Route

接收一个参数,主机名模式,判断请求的host是否满足匹配规则

spring:cloud:gateway:routes:- id: host_routeuri: https://example.orgpredicates:- Host=**.somehost.org,**.anotherhost.org

7、Method Route

接收一个参数Method,表示请求的方式匹配参数

spring:cloud:gateway:routes:- id: method_routeuri: https://example.orgpredicates:- Method=GET,POST

8、Path Route

接收一个路径集合,表示请求的路径需要匹配Path中的路径

spring:cloud:gateway:routes:- id: path_routeuri: https://example.orgpredicates:- Path=/red/{segment},/blue/{segment}

9、Query Route

接收两个参数,请求param和正则表达式,判断请求参数是否具有给定名称且值与正则表达式

spring:cloud:gateway:routes:- id: query_routeuri: https://example.orgpredicates:- Query=green

10、RemoteAddr Route

路由谓词工厂采用的RemoteAddr列表(最小大小为 1)sources,它们是 CIDR 表示法(IPv4 或 IPv6)字符串,例如192.168.0.1/16(其中192.168.0.1是 IP 地址和16子网掩码)。以下示例配置 RemoteAddr 路由谓词:

spring:cloud:gateway:routes:- id: remoteaddr_routeuri: https://example.orgpredicates:- RemoteAddr=192.168.1.1/24

11、 Weight Route

接收一组【组名,权重】,然后对于同一个组内的路由按照权重转发

spring:cloud:gateway:routes:- id: weight_highuri: https://weighthigh.orgpredicates:- Weight=group1, 8- id: weight_lowuri: https://weightlow.orgpredicates:- Weight=group1, 2

12、 XForwardedRemoteAddr Route

路由谓词工厂采用的XForwarded Remote Addr列表(最小大小为 1)sources,它们是 CIDR 表示法(IPv4 或 IPv6)字符串,例如192.168.0.1/16(其中192.168.0.1是 IP 地址和16子网掩码)。

此路由谓词允许根据X-Forwarded-ForHTTP 标头过滤请求。

这可以与反向代理一起使用,例如负载平衡器或 Web 应用程序防火墙,其中仅当请求来自这些反向代理使用的受信任的 IP 地址列表时才允许请求。

spring:cloud:gateway:routes:- id: xforwarded_remoteaddr_routeuri: https://example.orgpredicates:- XForwardedRemoteAddr=192.168.1.1/24

11、自定义路由断言工厂

1、必须是Spring的Bean

2、类必须以RoutePredicateFactory结尾(约定大于配置)

3、必须继承AbstractRoutePredicateFactory

4、必须声明静态内部类 声明属性来接收 配置文件中对应的断言的信息

5、需要结合shortcutFieldOrder进行绑定

6、通过apply进行逻辑判断 true就是匹配成功 false匹配失败

package com.wwh.blog.config;import org.springframework.cloud.gateway.handler.predicate.AbstractRoutePredicateFactory;
import org.springframework.cloud.gateway.handler.predicate.GatewayPredicate;
import org.springframework.stereotype.Component;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.server.ServerWebExchange;import javax.validation.constraints.NotEmpty;
import java.util.Collections;
import java.util.List;
import java.util.Objects;
import java.util.function.Predicate;@Component
public class TokenRoutePredicateFactory extends AbstractRoutePredicateFactory<TokenRoutePredicateFactory.Config> {public TokenRoutePredicateFactory() {super(Config.class);}@Overridepublic Predicate<ServerWebExchange> apply(Config config) {return new GatewayPredicate() {@Overridepublic boolean test(ServerWebExchange exchange) {String token = config.getToken();if (Objects.isNull(token) && !token.equals("auth")) {return false;}// there is a value and since regexp is empty, we only check existence.return true;}@Overridepublic Object getConfig() {return config;}@Overridepublic String toString() {return String.format("Token: %s ", config.token);}};}@Overridepublic List<String> shortcutFieldOrder() {return Collections.singletonList("token");}@Validatedpublic static class Config {@NotEmptyprivate String token;public String getToken() {return token;}public void setToken(String token) {this.token = token;}public Config(String token) {this.token = token;}}}

spring cloud gateway Route配置相关推荐

  1. 网关Spring Cloud Gateway的配置和使用

    文章目录 1. 什么是Spring Cloud Gateway? 2. Gateway与zuul的区别 3. Gateway的配置和使用 ①:常用的路由断言工厂 ②:常用的过滤器工厂(GatewayF ...

  2. Spring Cloud Gateway 基本配置

    配置路由到集群 我们的前篇示例,是单独使用Gateway,我们只导入了Gateway的依赖,路由到uri配置的是实际的服务提供方地址,在Spring Cloud环境下,服务的提供方可能是一个集群,这时 ...

  3. Spring Cloud Gateway源码系列之路由配置加载过程

    当前章节主要是讲解配置文件中定义的路由配置被gateway加载,同时转为可以直接操作的路由对象 引入pom坐标 <dependency><groupId>org.springf ...

  4. spring cloud gateway的stripPrefix配置

    序 本文主要研究下spring cloud gateway的stripPrefix配置 使用zuul的配置 zuul:routes:demo:sensitiveHeaders: Access-Cont ...

  5. Spring Cloud Gateway 源码解析(2) —— 路由

    目录 基本组件 路由定位器(RouteDefinitionLocator ) 路由定义(RouteDefinition) PredicateDefinition FilterDefinition Co ...

  6. Spring Cloud Gateway 源码解析(1) —— 基础

    目录 Gateway初始化 启用Gateway GatewayClassPathWarningAutoConfiguration GatewayLoadBalancerClientAutoConfig ...

  7. Spring Cloud Gateway介绍(二)

    Spring Cloud Gateway介绍(一) 全局Filters GlobalFilter与GatewayFilter具有一样的接口. 这些全局过滤器都有对应的配置类,例如: org.sprin ...

  8. 网关Spring Cloud Gateway科普

    点击上方"朱小厮的博客",选择"设为星标" 后台回复"加群"获取公众号专属群聊入口 欢迎跳转到本文的原文链接:https://honeypp ...

  9. Spring Cloud Gateway(五):路由定位器 RouteLocator

    本文基于 spring cloud gateway 2.0.1 1.简介 直接 获取 路 由 的 方法 是 通过 RouteLocator 接口 获取. 同样, 该 顶 级 接口 有多 个 实现 类, ...

最新文章

  1. java耗时操作阻塞_springboot~高并发下耗时操作的实现
  2. php smarty框架案例,php封装的smarty类案例
  3. 手把手教你用Flutter做炫酷动画
  4. 从一个实例看编程水平的步步提高
  5. 解决问题--Could not get JDBC Connection
  6. debian nginx php配置文件,在debian上安装配置nginx + php-FPM + APC
  7. PyCharm高校固定资产管理系统django-python+vue
  8. ZigBee(CC2530)(03)数据手册分享(英文+中文)
  9. 多电压等级计算机潮流计算,电力系统稳态分析教学心得
  10. 李时珍食物疗法150条 百年难遇的养生千古名方
  11. python你实现视频自动打码,了解妨碍你观看精彩的马赛克是怎么精准形成的
  12. ubuntu18 安装caj阅读器 wine
  13. PAT乙级 1068 万绿丛中一点红 (20 分) Java 实现
  14. 【上海房价预测】代码实现——利用BP神经网络进行上海二手房价预测
  15. 读书笔记:《关于上班这件事--自序·朱德庸》
  16. python实现微信hook_GitHub - redtips/wechathook: 借助微信hook,拦截修改某些call,填充进我们的Python代码,进行微信公众号文章的爬取...
  17. python redis缓存_第二百九十五节,python操作redis缓存-字符串类型
  18. Redis看这一篇就够了
  19. 【历史上的今天】12 月 24 日:姚期智出生;微软在 Java 反垄断案中败诉;GIF 图像格式获得专利保护
  20. 前端实现文件上传的断点续传

热门文章

  1. 市值即将破600亿元,深信服2019年利润可能破7亿元
  2. 直流微电网共直流母线技术及应用
  3. 看《墨攻》理解IoC概念
  4. ESP32 485温湿压、噪声4合1传感器测试
  5. 乡村振兴亟需科技赋能
  6. Redux-saga快速解读
  7. jvm虚拟机浅谈(二)
  8. PPT基础知识和快捷键的应用
  9. 天正启动时加载那些lisp_启动CAD时自动加载Lisp的工具和插件的方法?
  10. LG4171/BZOJ1823 「JSOI2010」满汉全席 2-SAT