Gateway篇(一)之Gateway配置
网关出现的背景
微服务中,服务的粒度被细分,以往的一整大块服务可以被拆分成类似订单服务,支付服务等。拆分后的服务一般都是通过网络来进行通讯的,如果让客户端一个个来调用服务,未免过于复杂。这个时候大家可能会想到nginx来进行反向代理,不过nginx的配置稍有麻烦。于是乎Gateway就出现了,Gateway比nginx更加契合Spring Cloud系统。
网关的作用
网关是处于应用程序或服务之前的系统,用来管理授权、访问控制和流量限制等。通俗来讲就是对其他服务请求的集中管理,请求先到网关,再由网关请求到真实的服务。
Gateway中主要的几个配置
- Route路由:网关的基本,由ID、URI、断言(Predicate)、过滤器(filter)组成。断言相当于条件判断,判断为真,则由路由匹配。
- 断言(Predicate):可以使用这个匹配来自HTTP请求的任何内容
- 过滤器(filter):对请求和响应进行修改处理
断言可以匹配的项
- ZonedDateTime:根据时间来进行匹配
- Cookie:根据cookie来进行匹配
- Header:根据请求头来进行匹配
- Host:根据请求域名来进行匹配
- Method:根据请求方法来进行匹配
- Path:根据请求路径来进行匹配
- Query:根据请求参数来进行匹配
- RemoteAddr:根据远程IP进行谓词的校验匹配
举例
spring:cloud:gateway:routes:- id: test_routeuri: http://ip:port //真正跳转的路径predicates:- Host=**.com- Path=/headers- Method=POST- Header=X-Request-Id, \d+- Query=name- Cookie=chocolate, ch.p- After=2020-01-25T06:06:06+08:00```注:1. 如果一个路由中存在多个断言,那么请求必须满足所有断言,才能匹配。
2. 一个请求如果满足多个路由的断言,只会被第一个路由所匹配。### **过滤器(filter)**过滤器也有许多设置,这里只提及其中两项:StripPrefix:去掉部分url路径```bash
spring:cloud:gateway:routes:# 集成eureka注册中心的配置示例- id: hello_ribbon_routeuri: lb://spring-cloud-producerpredicates:- Path=/producerInEureka/**filters:- StripPrefix=1```假设我们的请求是 http://localhost:8080/producerInEureka/hello ,经过过滤器(StripPrefix=1)后发送到spring-cloud-producer的请求就为[http://spring-cloud-producer/hello](http://spring-cloud-producer/hello)
集成eureka注册中心的配置示例
- id: hello_ribbon_route
- uri: lb://spring-cloud-producerpredicates:
- Path=/producerInEureka/**filters:
- PrefixPath=/test
我们的请求是 http://localhost:8080/producerInEureka/hello ,经过过滤器(StripPrefix=1)后发送到spring-cloud-producer的请求就为http://spring-cloud-producer/test/producerInEureka/hello
gateway配置示例
spring:cloud:gateway:globalcors:cors-configurations: #网关跨域的配置'[/**]':allowedOrigins: "*"allowedHeaders: "*"allowCredentials: trueallowedMethods:- GET- POST- PUT- OPTIONS routes:# 集成eureka注册中心的配置示例- id: hello_ribbon_routeuri: lb://spring-cloud-producerpredicates:- Path=/producerInEureka/**filters:- PrefixPath=/test
Gateway篇(一)之Gateway配置相关推荐
- ElasticSearch入门 第二篇:集群配置
这是ElasticSearch 2.4 版本系列的第二篇: ElasticSearch入门 第一篇:Windows下安装ElasticSearch ElasticSearch入门 第二篇:集群配置 E ...
- Puppet基础篇9-Puppetmaster多环境配置
Puppet基础篇9-Puppetmaster多环境配置 零基础学习Puppet自动化配置管理系列文档 扩充现有架构环境是对一个企业成长的见证 将基础环境模块部署到puppetmaster端之后就可以 ...
- IIS负载均衡-Application Request Route详解第二篇:创建与配置Server Farm(转载)
IIS负载均衡-Application Request Route详解第二篇:创建与配置Server Farm 自从本系列发布之后,收到了很多的朋友的回复!非常感谢,同时很多朋友问到了一些问题,有些问 ...
- 树莓派 + Home Assistant + HomeKit 从零开始打造个人智能家居系统 篇二:初步配置 Home Assistant 并连接小米设备与 HomeKit
树莓派 + Home Assistant + HomeKit 从零开始打造个人智能家居系统 篇二:初步配置 Home Assistant 并连接小米设备与 HomeKit 通过本篇教程,你将完成对 H ...
- NHibernate3剖析:Configuration篇之SessionFactory lambda配置
概览 在NHibernate3.0中,SessionFactory的Properties和Cache配置实现了流配置(fluent-configuration)和lambda表达式配置(lambda- ...
- 树莓派 + Home Assistant + HomeKit 从零开始打造个人智能家居系统 篇三:进阶配置 Home Assistant
树莓派 + Home Assistant + HomeKit 从零开始打造个人智能家居系统 篇三:进阶配置 Home Assistant 通过本篇教程,你将完成对 Home Assistant 的进一 ...
- Microsoft Teams 语音篇(二)--配置语音会议
很早前有一篇文章讲到了如何给用户分配呼叫计划, 本篇来看一下如何配置语音会议–audio conference. 有人问过一个很好的问题,如果这些东西想自己去测试一下应该怎么做,用什么许可证比较好,这 ...
- 文件服务器安装配置说明手册,FreeBSD全能服务器安装手册之文件服务器篇之A安装配置篇...
FreeBSD全能服务器安装手册FTP篇之A安装配置篇 cd /usr/ports/ftp/pure-ftpd make WITH_WELCOMESG=yes WITH_UPLOADSCRIPT=ye ...
- spring cloud gateway跨域全局CORS配置
在Spring 5 Webflux中,配置CORS,可以通过自定义WebFilter实现: 注:此种写法需真实跨域访问,监控header中才会带相应属性. 代码实现方式 import org.spri ...
最新文章
- csvtk:高效命令行版极简dplyr
- 神策数据张涛:企业服务客户全生命周期运营三步曲:执行反馈
- SAP编程中最基本的概念
- HP 380 G5安装CentOS7时找不到P400 raid卡
- hello March
- centos 7.3 设置静态IP
- 设置自动清理mysql binlog日志和手动删除的方法
- 什么是Reactive Streams in Java 译
- Android 通过联系人姓名查询联系人号码
- 【2019华东交通校赛:H】谁在说谎(思维)
- 如何构建自己的游戏框架并且制作游戏(一)(附源码)
- 局域网文件服务器单独文件夹加密,局域网 如何给共享文件夹加密
- 考研 |高等数学 Chapter 1
- 华为OD机试 - We Are A Team
- Maya模型Fbx材质有贴图却不显示
- Android要ios王者,王者荣耀怎么转区 安卓转苹果需要什么要求
- Android性能优化之启动优化实战篇,系列篇
- 使用BeanEditForm来创建用户表单
- c语言的%10是什么意思,c语言中1/10%10是什么意思结果是什么
- 使用bat批处理文件启动.exe程序