互联网技术-alibaba-gateway网关中routers路由匹配规则
gateway的主要功能之一是转发请求,转发规则的定义主要包含三个部分
组成 描述 路由 Route 路由是网关的基本单元, 由ID、URI、一组Predicate、一组Filter组成,根据Predicate进行匹配转发。 断言 Predicate 路由转发的判断条件,目前SpringCloud Gateway支持多种方式, 常见如:Path、Query、Method、Header等,写法必须遵循 key=vlue的形式 过滤器 Filter 过滤器是路由转发请求时所经过的过滤逻辑,可用于修改请求、响应内容 - 修改yml文件,
- 添加
routes:- id: consumer #自定义uri: lb://service-consumer #访问路径predicates: #断言- Path=/consumer/**filters: #过滤器- StripPrefix=1
7.3.2 predicates 断言
在 Spring Cloud Gateway 中 Spring 利用 Predicate 的特性实现了各种路由匹配规则,有通过 Header、请求参数等不同的条件,来进行作为条件匹配到对应的路由。
简单来说, Predicate 就是一组匹配规则,方便请求过来时,匹配到对应的 Route 进行处理。
Spring Cloud GateWay 内置多种 Predicate ,如下:
规则 | 实例 |
---|---|
Path | - Path=/gate/,/rule/ |
Before | - Before=2017-01-20T17:42:47.789-07:00[America/Denver] |
After | - After=2017-01-20T17:42:47.789-07:00[America/Denver] |
Between | - Between=2017-01-20T17:42:47.789-07:00[America/Denver],2017-01-21T17:42:47.789-07:00[America/Denver] |
Cookie | - Cookie=chocolate, ch.p |
Header | - Header=X-Request-Id, \d+ |
Host | - Host=www.hd123.com |
Method | - Method=GET |
Query | - Query=baz |
RemoteAddr | - RemoteAddr=192.168.1.1/24 |
实例1:通过请求参数匹配
spring:cloud:gateway:routes:- id: queryuri: http://www.czxy.compredicates:- Query=my,123 #访问路径,有参数my将转发到www.czxy.com
http://localhost:10010/?my=123
实例2:通过请求路径匹配
spring:cloud:gateway:routes:- id: pathuri: http://www.czxy.compredicates:- Path=/czxy/{flag} #
http://localhost:10010/czxy/666
总结:
各种 Predicates 同时存在于同一个路由时,请求必须同时满足所有的条件才被这个路由匹配。
一个请求满足多个路由的断言条件时,请求只会被首个成功匹配的路由转发
7.3.3 Filter 网关过滤器
路由过滤器允许以某种方式修改传入的HTTP请求或传出HTTP响应。
过滤规则 | 实例 | 说明 |
---|---|---|
PrefixPath | - PrefixPath=/app | 对所有的请求路径添加前缀app |
RedirectTo | - RedirectTo=302, 首页 - 传智专修学院 | 重定向,配置包含重定向的返回码和地址 |
RemoveRequestHeader | - RemoveRequestHeader=X-Request-Foo | 去掉某个请求头信息 |
RemoveResponseHeade | - RemoveResponseHeader=X-Request-Foo | 去掉某个响应头信息 |
RemoveRequestParameter | - RemoveRequestParameter=red | 去掉某个请求参数信息 |
RewritePath | - RewritePath=/where(?<segment>/?.), /test(?<segment>/?.) | 改写路径 /where/... 改成 /test/... |
SetPath | - SetPath=/{segment} | 设置请求路径,与RewritePath类似 |
SetRequestHeader | - SetRequestHeader=X-Request-Red, Blue | 设置请求头信息 |
SetStatus | - SetStatus=401 | 设置响应状态码 |
StripPrefix | - StripPrefix=2 | 跳过指定路径 |
RequestSize | - name: RequestSize args: maxSize: 5000000 | 请求大小 |
实例1:跳过指定路径
spring:cloud:gateway:routes:- id: consumeruri: lb://service-consumer predicates:- Path=/consumer/** filters:- StripPrefix=1
实例2:添加前缀
#rest --> http://localhost:10010/consumer/echo/123 #fegin --> http://localhost:10010/consumer/feign/echo/123
spring:cloud:gateway:routes:- id: PrefixPathuri: lb://service-consumerpredicates:- Path=/consumer/**filters:- StripPrefix=1- PrefixPath=/feign
#feign --> http://localhost:10010/consumer/echo/123
实例3:改写路径
#rest --> http://localhost:10010/consumer/echo/123
spring:cloud:gateway:routes:- id: RewritePathuri: lb://service-consumerpredicates:- Path=/consumer/**filters:- RewritePath=/consumer(?<segment>/?.*), $\{segment}
# 正则表达式详解:
# ?<segment> --> 名称为 segment 的组
# /? --> /出现0次或1次
# .* --> 任意字符出现0次或多次
# 总结:将 /?.*匹配到的结果捕获到名称为segment的组中
# $\{segment} --> 将名称为 segment 的分组捕获到的文本置换到此处
## 注意,\的出现是由于避免 yaml 语法认为这是一个变量
互联网技术-alibaba-gateway网关中routers路由匹配规则相关推荐
- 云南农业职业技术学院 / 互联网技术学院官网 HTML5+CSS3
HTML学完后写了,有小组成员参与开发,我只写了主页,那就只贴主页的代码出来了. 作为初学者,代码写得不太好,写博客纯属记录!有问题望指导! 码云开源仓库地址:https://gitee.com/yn ...
- Nginx篇之路由匹配规则以及配置url转发
一.前言 一般我们经常在访问网站时,通常会遇到输入某个页面的网址时,出现路由的转发,重定向等.可能访问的是一个网址,出来的时候就显示的是另外的地址. 这种情况下,通常属于nginx的页面跳转. 二.N ...
- django中路由匹配规则
1.定义 指url与后端视图之间的一一映射关系 2.添加路由以及匹配规则 1)需要在全局路由文件中(url.py),urlpatterns列表中添加路由条目 2)urlpatterns是固定的,是列表 ...
- linux 路由匹配原则,Nginx localhost路由匹配规则
URI 即统一标识资源符,通用的 URI 语法格式如下: scheme:[//[user[:password]@]host[:port]][/path][?query][#fragment] 格式说明 ...
- expressjs路由匹配规则
expressjs作为nodejs的MVC框架,其路由规则与大部分其他MVC框架类似,略有不同,研究后做个小记. expressjs路由在app.js中配置,app.js源码如下(不同的版本会有所不同 ...
- 高能预警!各路大神正火速奔赴8月WOT2016 移动互联网技术峰会
2016年8月26-27日,由51CTO.com主办的WOT2016移动互联网技术大会将在北京珠三角JW万豪酒店拉开序幕.届时,预计将有超过1000名企业技术管理.移动开发和技术创业人员共赴一堂,与各 ...
- 记录 Spring Cloud GateWay 使用 路径与路由名字重复 出现的问题
大家好,我是小文,这篇文章是我使用 SCG 所出现的问题.在这里记录一下. 1.某个服务中新建了一个控制器Controller,没有遵循网关的路由匹配规则,报错404: 2.路由规则与注册服务名出现重 ...
- React 路由匹配模式
React 路由匹配模式 react中的路由按照路径的正则进行匹配,很容易出现同时匹配多个路由组件的情况,路由规则提供了一个唯一匹配模式组件:Switch 问题:添加Switch没有任何反应,且各个页 ...
- SpringCloud Alibaba微服务实战(七) - 路由网关(Gateway)全局过滤
说在前面 全局过滤器作用于所有的路由,不需要单独配置,我们可以用它来实现很多统一化处理的业务需求,比如权限认证,IP 访问限制,监控,限流等等. 创建路由网关(Gateway)启动服务cloud-ac ...
最新文章
- 谈谈《潜伏在办公室》对管理层的影响
- 科学说忘记一个人只要七年
- mysql 5.7 双主配置_MySQL5.7.18 双主配置
- asp.net MVC 应用程序的生命周期
- android相关论文,android
- 华为技术有限公司申请“荣耀视频”、“荣耀钱包”等商标
- 使用C++开发的NES(FC)模拟器
- 如何用一台普通相机拍照红蓝立体3D图片
- 二维码门禁的解决方案
- 零基础学C语言 第3版 pdf
- Android源码编译详解【四】:Android 6.0_源码的下载与编译
- 如何恢复硬盘数据,包括硬盘文件名乱码
- 贵州2021高考成绩排名查询,贵州高考排名查询方法,2021年贵州高考成绩位次全省排名查询...
- 计算机英语反思总结怎么写,英语考试反思总结
- 解决Word、Excel启动时提示向程序发送命令出现问题
- 第五章 CSS美化网页元素
- 边缘计算导论——中山大学程旭老师课程总结
- 寒假作业1:打印沙漏
- 实战大项目:模拟登录丁香园,并抓取论坛页面所有的人员基本信息与回复帖子内容----登录第一步
- unit8_t, unit16_t, unit32_t, unit64_t