Spring Cloud Gateway配置详解-过滤器
Spring Cloud Gateway-过滤器
本节将为大家详细介绍Spring Could Gateway 内置过滤器相关内容。
Spring Cloud Gateway 过滤器为大家提供了修改特定路由中的http请求和响应的能力,默认提供了31种过滤器,基本满足大家的各种场景需求.
基本配置
过滤器的配置分为两种方式,一种是通过配置文件的方式(此方式有简化配置模式及详细配置模式两种,同断言,不再详述),一种是通过编码的方式。
配置文件(摘自官方文档):
spring:cloud:gateway:routes:- id: resourceuri: http://localhost:9000predicates:- Path=/resourcefilters:- TokenRelay=
编码方式(摘自官方文档):
@Bean
public RouteLocator customRouteLocator(RouteLocatorBuilder builder) {return builder.routes().route("resource", r -> r.path("/resource").filters(f -> f.tokenRelay()).uri("http://localhost:9000")).build();
}
配置全局过滤器:
spring:cloud:gateway:default-filters:- AddResponseHeader=X-Response-Default-Red, Default-Blue- PrefixPath=/httpbin
内置31种过滤器
在这里为大家一一介绍:
序号 | 过滤器 | 作用 | 参数名 | 参数值 | 示例(filters配置) | 备注 |
---|---|---|---|---|---|---|
1 | AddRequestHeader | 添加请求头 | name,value | 添加的请求头及其值 |
AddRequestHeader=X-Request-red, blue
|
|
2 | AddRequestParameter | 在Query String中添加请求参数,参数值可以是变量,具体值可以从PATH或Host中匹配 | name,value | 添加的参数名及其值 |
AddRequestParameter=foo, bar-{segment}
|
|
3 | AddResponseHeader | 添加响应头 | name,value | 添加的响应头及其值 |
AddResponseHeader=X-Response-Red, Blue
|
|
4 | DedupeResponseHeader | 过滤重复响应头 | name,strategy | 需要过滤的响应头及策略(保留第一个,保留最后一个,保留唯一值) |
DedupeResponseHeader=Access-Control-Allow-Credentials Access-Control-Allow-Origin
|
|
5 | CircuitBreaker | 熔断器 | name,fallbackUri,statusCodes | 熔断器名称、熔断后的默认URI、熔断触发状态 |
- CircuitBreaker=myCircuitBreaker
|
使用熔断器需配置spring-cloud-starter-circuitbreaker-reactor-resilience4j ,详见Resilience4J Documentation
|
6 | FallbackHeaders | 指定发生熔断时fallback响应头 | executionExceptionTypeHeaderName, executionExceptionMessageHeaderName, rootCauseExceptionTypeHeaderName, rootCauseExceptionMessageHeaderName | 异常类型、详情、根因类型、根因详情等响应头名称 |
executionExceptionTypeHeaderName: Test-Header
|
|
7 | MapRequestHeader | 添加新的请求头,值从已有请求头中获取 | fromHeader,toHeader | 已有请求头名称,新请求头名称 |
MapRequestHeader=Blue, X-Request-Red
|
|
8 | PrefixPath | 请求路径增加前缀 | prefix | 需增加的前缀 |
PrefixPath=/mypath
|
|
9 | PreserveHostHeader | 配置是否将原始请求头发送到服务方 | - | - |
PreserveHostHeader
|
|
10 | RequestRateLimiter | 请求频度控制 | - | - | 默认提供了基于Redis的频度控制过滤器,也可以自定义 | |
11 | RedirectTo | 重定向过滤器 | status,url | 重定向http status及重定向后的url |
RedirectTo=302, https://acme.org
|
|
12 | RemoveRequestHeader | 删除请求头 | name | 待删除的请求头 |
RemoveRequestHeader=X-Request-Foo
|
|
13 | RemoveResponseHeader | 删除响应头 | name | 待删除的响应头 |
RemoveResponseHeader=X-Response-Foo
|
|
14 | RemoveRequestParameter | 删除请求参数 | name | 待删除的请求参数名 |
RemoveRequestParameter=red
|
|
15 | RewritePath | 重写PATH | regexp,replacement | 重写部分匹配规则,需替换的值 |
RewritePath=/red/?(?<segment>.*), /$\{segment}
|
匹配规则采用正则表达式,替换值支持从匹配中获取 |
16 | RewriteLocationResponseHeader | 重写响应头中的Location | stripVersionMode, locationHeaderName, hostValue, protocolsRegex | path中version处理模式,location响应头名称,host值,url协议头 |
RewriteLocationResponseHeader=AS_IN_REQUEST, Location, ,
|
|
17 | RewriteResponseHeader | 重写响应头 | name,regexp,replacement | 响应头名称,需修改值的匹配规则,需替换的值 |
RewriteResponseHeader=X-Response-Red, , password=[^&]+, password=***
|
|
18 | SaveSession | 强制触发WebSession::save | - | - |
SaveSession
|
|
19 | SecureHeaders | 添加一组安全相关的头信息到响应中 | - | - |
SecureHeaders
|
|
20 | SetPath | 设置请求path | template | path模板 |
SetPath=/{segment}
|
|
21 | SetRequestHeader | 设置请求头(不添加新的) | name,value | 请求头及其值 |
SetRequestHeader=X-Request-Red, Blue
|
|
22 | SetResponseHeader | 设置响应头(不添加新的) | name,value | 响应头及其值 |
SetResponseHeader=X-Response-Red, Blue
|
|
23 | SetStatus | 设置响应状态 | status | 响应状态 |
SetStatus=401
|
|
24 | StripPrefix | 截断请求PATH | parts | 需截断的长度(’/'个数) |
StripPrefix=2
|
|
25 | Retry | 重试过滤器 | - | - | - | 详细配置 |
26 | RequestSize | 限流器 | maxSize | 请求最大报文大小 |
maxSize: 5000000
|
|
27 | SetRequestHostHeader | 设置请求host | host | 分组及权重 |
SetRequestHostHeader=example.org
|
|
28 | ModifyRequestBody | 修改请求报文 | - | - | - | 只能通过 Java DSL 配置 |
29 | ModifyResponseBody | 修改响应报文 | - | - | - | 只能通过 Java DSL 配置 |
30 | TokenRelay | 配合OAuth2使用 | - | - |
TokenRelay=
|
|
31 | CacheRequestBody | 根据权重进行路由 | bodyClass | 请求体类型 | - | 详细配置 |
Spring Cloud Gateway配置详解-过滤器相关推荐
- 微服务网关spring cloud gateway入门详解
1.API网关 API 网关是一个处于应用程序或服务( REST API 接口服务)之前的系统,用来管理授权.访问控制和流量限制等,这样 REST API 接口服务就被 API 网关保护起来,对所有的 ...
- Spring Cloud Gateway配置熔断CircuitBreaker
我们使用的SpringCloud版本是Hoxton.SR9,小于G版本的是不支持CircuitBreaker的 CircuitBreaker原理 CircuitBreaker是由一个有限状态机实现的, ...
- SpringBoot配置文件中spring.profiles.active配置详解
SpringBoot配置文件中spring.profiles.active配置详解 1.多环境配置 我们在开发Spring Boot应用时,通常同一套程序会被应用和安装到几个不同的环境,比如:开发.测 ...
- Spring Cloud限流详解(附源码)
在高并发的应用中,限流往往是一个绕不开的话题.本文详细探讨在Spring Cloud中如何实现限流. 在 Zuul 上实现限流是个不错的选择,只需要编写一个过滤器就可以了,关键在于如何实现限流的算法. ...
- Spring Cloud限流详解(内含源码)
为什么80%的码农都做不了架构师?>>> 原文:http://www.itmuch.com/spring-cloud-sum/spring-cloud-ratelimit/ 在 ...
- 【项目实战】Spring Cloud Gateway入门介绍 - 网关过滤器工厂
一.全局过滤器GlobalFilter 全局过滤器是针对于网关而言通用的功能组件实现,采用全局来实现. 以下是两个如何全局过滤器GlobalFilter的实例 1.1 实例1:定义ForwardAut ...
- Spring Cloud Gateway –配置简单路由
可以将Spring Cloud Gateway视为Spring Cloud Netflix Zuul项目的后续产品,并有助于在微服务环境中实现Gateway模式 . 它建立在 Spring Boot ...
- Spring Cloud Feign使用详解
通过前面两章对Spring Cloud Ribbon和Spring Cloud Hystrix的介绍,我们已经掌握了开发微服务应用时,两个重要武器,学会了如何在微服务架构中实现客户端负载均衡的服务调 ...
- Spring拦截器配置详解(如何定义一个拦截器)
一.前言 Spring和SpringBoot的拦截器也是对请求进行的系列验证或处理,关于拦截器和过滤器的区别此文不做介绍,之前我看到过一篇相关系列的文章,讲述的还比较详细,给大家参考参考:拦截器与过滤 ...
最新文章
- 机智云5.0推出IoT套件GoKit4.0 可实现物联网应用协同开发
- linux 内核加载错误 Invalid module format
- iOS中 加强日志输出 开发技术总结
- 深度学习核心技术精讲100篇(五)-通过CTR预估对比深度学习模型(deepfm)梯度提升模型(catboost)
- VTK序列图像的读取
- 使用EventViewer记录VSTO add-in启动错误
- 【教程】jQuery打造动态下滑菜单
- Google Chrome浏览器可能在您不知情的情况下破坏了您的测试
- 前端学习(3202):函数式组件
- python下载图片的命令_网上的图片不知道怎么批量下载?python教你怎么把网站上面的图片都爬下来...
- 能运行shell吗_terminal, shell, bash, zsh
- 删除当前文件夹下特定名称文件
- 句向量的表示(上)—无监督
- SpringMVC之RequestParam详解
- 使用Hexo+Github一步步搭建属于自己的博客(基础)
- 【基础教程】基于matlab疫情防护动图制作【含Matlab源码 028期】
- mysql物业管理系统设计_Java开发物业管理系统:数据库表单设计
- 将 N 叉树编码为二叉树
- 锁定计算机屏幕的快捷键是什么,锁住电脑屏幕的快捷键_打开电脑屏幕的快捷键...
- 微信小程序--瀑布流布局
热门文章
- 计算机等级和计算应用区别,全国计算机等级考试一级和二级的区别是什么?
- Kraken taxonomic sequence classification system
- [附源码]JSP+ssm计算机毕业设计艾儿影楼管理系统18llj【源码、数据库、LW、部署】
- 金蝶云如何html5登录,可以在移动端进行云之家登录,也可以通过网页登录
- 浏览器,服务器,浏览器和服务器之间的通信协议
- 运营型CRM系统(运营型客户关系管理)只是针对于运营的吗?
- 信息与网络安全(五)——网络安全协议与AES算法
- js如何精确判断是否是数组?
- 什么是等离子体?什么是等离子体效应?
- geoserver发布tif格式数据