spring cloud gateway Route配置
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-For
HTTP 标头过滤请求。
这可以与反向代理一起使用,例如负载平衡器或 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配置相关推荐
- 网关Spring Cloud Gateway的配置和使用
文章目录 1. 什么是Spring Cloud Gateway? 2. Gateway与zuul的区别 3. Gateway的配置和使用 ①:常用的路由断言工厂 ②:常用的过滤器工厂(GatewayF ...
- Spring Cloud Gateway 基本配置
配置路由到集群 我们的前篇示例,是单独使用Gateway,我们只导入了Gateway的依赖,路由到uri配置的是实际的服务提供方地址,在Spring Cloud环境下,服务的提供方可能是一个集群,这时 ...
- Spring Cloud Gateway源码系列之路由配置加载过程
当前章节主要是讲解配置文件中定义的路由配置被gateway加载,同时转为可以直接操作的路由对象 引入pom坐标 <dependency><groupId>org.springf ...
- spring cloud gateway的stripPrefix配置
序 本文主要研究下spring cloud gateway的stripPrefix配置 使用zuul的配置 zuul:routes:demo:sensitiveHeaders: Access-Cont ...
- Spring Cloud Gateway 源码解析(2) —— 路由
目录 基本组件 路由定位器(RouteDefinitionLocator ) 路由定义(RouteDefinition) PredicateDefinition FilterDefinition Co ...
- Spring Cloud Gateway 源码解析(1) —— 基础
目录 Gateway初始化 启用Gateway GatewayClassPathWarningAutoConfiguration GatewayLoadBalancerClientAutoConfig ...
- Spring Cloud Gateway介绍(二)
Spring Cloud Gateway介绍(一) 全局Filters GlobalFilter与GatewayFilter具有一样的接口. 这些全局过滤器都有对应的配置类,例如: org.sprin ...
- 网关Spring Cloud Gateway科普
点击上方"朱小厮的博客",选择"设为星标" 后台回复"加群"获取公众号专属群聊入口 欢迎跳转到本文的原文链接:https://honeypp ...
- Spring Cloud Gateway(五):路由定位器 RouteLocator
本文基于 spring cloud gateway 2.0.1 1.简介 直接 获取 路 由 的 方法 是 通过 RouteLocator 接口 获取. 同样, 该 顶 级 接口 有多 个 实现 类, ...
最新文章
- java耗时操作阻塞_springboot~高并发下耗时操作的实现
- php smarty框架案例,php封装的smarty类案例
- 手把手教你用Flutter做炫酷动画
- 从一个实例看编程水平的步步提高
- 解决问题--Could not get JDBC Connection
- debian nginx php配置文件,在debian上安装配置nginx + php-FPM + APC
- PyCharm高校固定资产管理系统django-python+vue
- ZigBee(CC2530)(03)数据手册分享(英文+中文)
- 多电压等级计算机潮流计算,电力系统稳态分析教学心得
- 李时珍食物疗法150条 百年难遇的养生千古名方
- python你实现视频自动打码,了解妨碍你观看精彩的马赛克是怎么精准形成的
- ubuntu18 安装caj阅读器 wine
- PAT乙级 1068 万绿丛中一点红 (20 分) Java 实现
- 【上海房价预测】代码实现——利用BP神经网络进行上海二手房价预测
- 读书笔记:《关于上班这件事--自序·朱德庸》
- python实现微信hook_GitHub - redtips/wechathook: 借助微信hook,拦截修改某些call,填充进我们的Python代码,进行微信公众号文章的爬取...
- python redis缓存_第二百九十五节,python操作redis缓存-字符串类型
- Redis看这一篇就够了
- 【历史上的今天】12 月 24 日:姚期智出生;微软在 Java 反垄断案中败诉;GIF 图像格式获得专利保护
- 前端实现文件上传的断点续传