Zuul路由转发规则
定制的路由规则的主要功能:
1、路由表中包含源路径,微服务名称,目标路径
2、Endpoint粒度配置支持
3、路由支持1对1精确路由
4、源路径可以前缀/**格式来模糊路由
5、目标路径可以使用前缀/**格式来装配目标路径
6、保留默认动态路由规则:服务名称/** --> 是否截去前缀 --> 目标路径
7、保留默认动态路由规则是否支持截去前缀的配置参数stripPrefix特性
8、路由规则可以在不重启服务动态更新,这个功能通过外化配置来支持
9、匹配股则采取谁先匹配路由谁,也就是说在路由表中有2个或以上的路由规则可能被匹配到时,匹配最先查询到的规则
路由规则格式采用properties格式:
源路径 = 微服务名称, 目标路径
启动时读取配置并解析,放入路由表。请求时通过查询匹配到合适的路由转发。
例如:
/api/v1/trade=trade,/v1/trade
/api/customer/**=customer,/api/v1/**
/api/user/**=user
在上面的例子中:
- /api/v1/trade会精确的路由到trade微服务的/v1/trade;
- /api/customer/开头的api会路由转发到customer微服务的/api/v1/**,其中后面的**会被前面的**部分替换,比如/api/customer/card->/api/v1/card的转换
- /api/user/开头的api会路由转发到user微服务的/api/user/**,endppoint不变
一、直观显示路径到微服务的映射
#localhost:8888/routes(Zuul对应的IP及端口)
management:
security:
enabled: false

二、路由配置
1、静态路由
#除了“users”服务,其他的服务都会被忽略
zuul:
ignoredServices: '*'
routes:
users: /myusers/** #前端通过/myusers的http访问,将会被后端“users”服务处理(例如:/myusers/101将会转发的/101)
zuul:
routes:
users: /myusers/** #将xxx/books后面的所有请求,添加到url后面去
示例:http://localhost:8888/books/xxx->http://localhost:5000/books/avaiable/xxx
zuul:
routes:
books: http://localhost:5000/books/available #books/xxx=>转化为http://localhost:5000/books/available/xxx
示例:http://localhost:8888/books/xxx==>http://localhost:50000/books/available/xxx
server:
port: 8888
spring:
application:
name: zuul-gateway
zuul:
routes:
books:
url: http://localhost:5000/books/available #/baidu后的所有直接添加到http://localhost:8080后
示例:http://localhost:8888/baidu/**=>http://localhost:8080/**
zuul:
routes:
baidu:
path: /baidu/**
url: http://localhost:8080
2、静态路由+ribbon负载均衡/故障切换
zuul:
routes:
myroutes1:
path: /mypath/**
serviceId: myserverId
myserverId:
ribbon:
listOfServers: localhost:8080, localhost:8081
ribbon:
eureka:
enabled: false
3、动态路由+ribbon负载均衡/故障切换
zuul:
routes:
myroutes1:
path: /mypath/**
serviceId: myserviceId
eureka:
client:
serviceUrl:
defaultZne:xxx
4、路由匹配配置
stripPrefix=true,转发会过滤掉前缀
path: /myusers/**,默认时转发到服务的请求是/**,如果stripPrefix=false,转发的请求是/myusers/**
zuul.prefix=/api 会对所有的path增加一个/api前缀
ignoredPatterns: /**/admin/** 过滤掉匹配的url
route:
users: /myusers/**
会匹配所有/myusers/**的url,但由于ignoredPatterns, /myusers/**/admin/**的请求不会被转发,而是直接由zuul里的接口接收
5、匹配顺序
path:/myusers/**
path:/**
如果是在application.yml中配置的,那么会优先匹配/myusers/**
但如果是applicaiton.properties配置的,那么可能导致/myusers/**被/**覆盖
ignored-Services: ‘*‘ 对于自动发现的services,除了route中明确指定的,其他都会被忽略
6、请求头过滤
route.sensitiveHeaders: Cookie,Set-Cookie,Authorization
默认就有这三个请求头,意思是不向下游转发请求这几个头
zuul.ignoredHeaders 是一个全局设置,而route.sensitiveHeaders是局部设置
Zuul路由转发规则的更多相关文章
- SpringCloud Zuul 路由映射规则配置
阅读目录 前言 快速入门 路由详解 Cookie与头信息 本地跳转 Hystrix和Ribbon支持 过滤器解释 动态加载 后记 回到目录 前言 本文起笔于2018-06-26周二,接了一个这周要完成 ...
- SpringCloud学习之Zuul路由转发、拦截和熔断处理(七)
Spring Cloud Zuul 服务网关是微服务架构中一个不可或缺的部分.通过服务网关统一向外系统提供REST API的过程中,除了具备服务路由.均衡负载功能之外,它还具备了权限控制等功能. Sp ...
- spring cloud 2.x版本 Zuul路由网关教程
前言 本文采用Spring cloud本文为2.1.8RELEASE,version=Greenwich.SR3 本文基于前两篇文章eureka-server.eureka-client.eureka ...
- mininet实验 动态改变转发规则实验
写在前面 本实验参考 POX脚本设置好控制器的转发策略,所以只要理解脚本. mininet脚本设置好拓扑和相关信息,所以也只要理解脚本. POX脚本目前基本看不懂. 本实验我学会了:POX控制器Web ...
- Mininet实验 动态改变转发规则
介绍 拓扑如下: 在该环境下,假设H1 ping H4,初始的路由规则是S1-S2-S5,一秒后,路由转发规则变为S1-S3-S5,再过一秒,规则变为S1-S4-S5,然后再回到最初的转发规则S1-S ...
- Mininet系列实验(六):Mininet动态改变转发规则实验
一. 实验目的 熟悉Mininet自定义拓扑脚本的编写:熟悉编写POX脚本动态改变转发规则 二.实验原理 在SDN环境中,控制器可以通过对交换机下发流表操作来控制交换机的转发行为.在本实验中,基于Mi ...
- 实战四:Gateway网关作全局路由转发
Gateway网关的作用主要是两个:路由转发,请求过滤.此篇讲的是路由转发,下篇介绍请求过滤. 一,创建网关module,添加依赖 1,new -> module -> maven 或直接 ...
- Spring Cloud Zuul路由规则动态更新
背景 Spring Cloud Zuul 作为微服务的网关,请求经过zuul路由到内部的各个service,由于存在着新增/修改/删除服务的路由规则的需求,zuul的路由规则的动态变更功能 提供了 ...
- 【七】zuul路由网关
一.zuul是什么?zuul 包含以下两个最主要的功能:1.路由功能: 负责将外部请求转发到具体的微服务实例上,是实现外部访问统一入口的基础.2.过滤器功能: 则负责对请求的处理过程进行干预,是实现请 ...
随机推荐
- [转] iOS开发工具——网络封包分析工具Charles
简介 Charles是在Mac下常用的截取网络封包的工具,在做iOS开发时,我们为了调试与服务器端的网络通讯协议,常常需要截取网络封包来分析.Charles通过将自己设置成系统的网络访问代理服务器,使 ...
- python下载文件的方法
前一段时间是爬文字,最近准备爬图片 找到了两种保存文件的方法 一种是用urllib.urlretrieve方法 #-*- coding: utf-8 -*- import urllib def cal ...
- CentOS7.5安装nodejs
安装方法1——直接部署 1.首先安装wget yum install -y wget 如果已经安装了可以跳过该步 2.下载nodejs最新的tar包 可以在下载页面https://nodejs.org ...
- SVM(支持向量机)分类算法
SVM算法比较复杂,数学功底要求很高. 详见七月大神博客<支持向量机通俗导论(理解SVM的三层境界)>
- See you~ HDU1892
一开始还离散化弄了好久 离散化细节弄得好差 这题用二维树状数组做很快 因为树状数组下标不为0 所以所有下标要加一处理 还有就是算矩阵的时候要处理两个坐标的大小关系 个人感觉树状数组用for语句写 ...
- [OpenCV-Python] OpenCV 中图像特征提取与描述 部分 V (一)
部分 V图像特征提取与描述 OpenCV-Python 中文教程(搬运)目录 29 理解图像特征 目标本节我会试着帮你理解什么是图像特征,为什么图像特征很重要,为什么角点很重要等.29.1 解释 我相 ...
- Java内存管理-初始JVM和JVM启动流程(二)
勿在流沙住高台,出来混迟早要还的. 做一个积极的人 编码.改bug.提升自己 我有一个乐园,面向编程,春暖花开! 上一篇分享了什么是程序,以及Java程序运行的三个阶段.也顺便提到了Java中比较重要 ...
- bzoj2830: [Shoi2012]随机树
题目链接 bzoj2830: [Shoi2012]随机树 题解 q1好做 设f[n]为扩展n次后的平均深度 那么\(f[n] = \frac{f[n - 1] * (n - 1) + f[n - 1] ...
- BZOJ.3575.[HNOI2014]道路堵塞(最短路 动态SPFA)
题目链接 \(Description\) 给你一张有向图及一条\(1\)到\(n\)的最短路.对这条最短路上的每条边,求删掉这条边后\(1\)到\(n\)的最短路是多少. \(Solution\) 枚 ...
- c++模板 与 泛型编程基础
C++模板 泛型编程就是以独立于任何特定类型的方式编写代码,而模板是泛型编程的基础. (1)定义函数模板(function template) 函数模板是一个独立于类型的函数,可以产生函数的特定类型版 ...