Spring cloud Gateway常用配置

这篇具有很好参考价值的文章主要介绍了Spring cloud Gateway常用配置。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

gateway里的常用配置

前面的例子是通过路径(Path)方式配置路由转发,gateway还还有其他的配置,下面做个简单的介绍

1 路由 route

Route 主要由:路由id、目标uri、断言集合、过滤器集合组成。前面的实例用到了id、uri、断言。

  1. id:路由标识,要求唯一,名称任意(默认值 uuid,一般不用,需要自定义)
  2. uri:请求最终被转发到的目标地址
  3. order: 路由优先级,数字越小,优先级越高
  4. predicates:断言数组,即判断条件,如果返回值是boolean,则转发请求到 uri 属性指定的服务中
  5. filters:过滤器数组,在请求传递过程中,对请求做一些修改

2 断言 predicate

断言Predicate是java8引入的新特性,它接收一个输入参数,返回布尔值结果。我们代码中也可以使用Predicate,通过Predicate可以让你的代码更加的简洁。

gateway的Predict决定了请求由哪一个路由处理。它Spring WebFlux的HandlerMapping实现。Gateway包含了很多路由断言工厂,这些工厂对HTTP请求的很多属性进行了处理,当客户端请求时,HandlerMapping会获取请求参数,并与Gateway中配置的Predicates进行比对,满足规则就按规则约定进行路由放行,否则拒绝访问或报404。源码在 org.springframework.cloud.gateway.handler.predicate 包中,感兴趣或者排查问题的时候可以阅读或跟踪。

断言是一个数组,路由下可以配置多个断言,多个断言之间是“and”关系

3 过滤器 filter

gateway在处理请求时,在路由处理之前需要经过“pre”类型的过滤器处理,处理后,在返回响应之前,可以由“post”类型的过滤器处理。微服务场景下,我们各个服务处理请求时有些事情是都要做的,比如鉴权、限流、日志输出等,这样逻辑如果写到各自的应用上会有很多重复的代码,所以可以考虑把这些功能放在gateway上。

  • PRE:这种过滤器在请求路由之前调用。可以用这种过滤器实现身份验证、参数校验、权限校验、流量监控、日志输出、协议转换等、记录调试信息等。
  • POST:这种过滤器在路由到微服务以后执行。可以用这种过滤器实现响应内容/响应头的修改,日志的输出,流量监控、收集统计信息等。

Gateway 过滤器从作用范围可分为两种:

  • GatewayFilter:应用到单个路由或者一个分组的路由上(需要在配置文件中配置)
  • GlobalFilter:应用到所有的路由上(无需配置,全局生效)
  1. 局部过滤器 GatewayFilter:Gateway 中内置了许多的局部过滤器;局部过滤器需要在指定路由配置才能生效。
  2. GlobalFilter 全局过滤器: GlobalFilter 的功能其实和 GatewayFilter 是相同的,只是 GlobalFilter 的作用域是所有的路由配置,而不是绑定在指定的路由配置上。多个 GlobalFilter 可以通过 @Order 或者 getOrder() 方法指定执行顺序,order值越小,执行的优先级越高。

由于过滤器有 pre 和 post 两种类型,pre 类型过滤器如果 order 值越小,那么它就应该在pre过滤器链的顶层,post 类型过滤器如果 order 值越小,那么它就应该在 post 过滤器链的底层

  1. 常用过滤器规则(Filter)
过滤规则 实例 说明
StripPrefix - StripPrefix=1 去掉URL路径中的部分前缀
PrefixPath - PrefixPath=/app 在请求路径前加上app
RewritePath - RewritePath=/test, /app/test 访问localhost:8000/test,请求会转发到localhost:8080/app/test
SetPath SetPath=/app/{path} 通过模板设置路径,转发的规则时会在路径前增加app,{path}表示原请求路径
RedirectTo 重定向
RemoveRequestHeader 去掉某个请求头信息

4 常用断言(predicate)方法

4.1 Path方式

通过访问路径匹配。另一篇里写的"pattern": "/app2/**"就是path方式

4.2 Before方式

Before只接受一个时间参数,即DateTime格式时间,客户端访问Gateway接口的时间在此时间之前。当部署有访问时间限制的接口,可以使用Before、After、Between断言。

通过源码(org.springframework.cloud.gateway.handler.predicate.BeforeRoutePredicateFactory)发现,Before断言使用的时间对象是ZonedDateTime

- Path=/app2/**
- Before=2023-08-01T09:00:00[Asia/Shanghai]

4.3 After方式

与before类似,只是限定为指定时间之后

- Path=/app2/**
- After=2023-08-01T09:00:00+08:00[Asia/Shanghai]

4.4 Between方式

与before、after类似

- Path=/app2/**
- Between=2023-08-01T09:00:00+08:00[Asia/Shanghai], 2023-08-05T09:00:00+08:00[Asia/Shanghai]

4.5 Cookie方式

请求头传递了cookie并且值与gateway设置的相等。下面这个要求cookie里有some值且等于thing。

predicates:
- Cookie=some, thing

4.6 Header方式

请求头属性与设置的匹配,支持正则。下面这个要求My-Cust-Request-Id是数字串。

- Header=My-Cust-Request-Id, \d+

4.7 Host方式

根据前请求的host匹配,当前请求头中的host满足设定规则才会放行

- Path=/app1/**
- Host=localhost,**.xxx.com,127.0.0.1:8000

4.8 请求方法方式

请求方法,比如GET、POST、PUT等。

- Path=/app1/**
- Method=GET,POST

4.9 请求IP方式 RemoteAddr

用于限制允许访问接口的客户端IP网段

- RemoteAddr=192.168.1.1/24

4.10 请求参数方式 Query

请求参数与配置的相同。下面这个配置要求请求参数some=thing。

- Query=some,thing

4.10 权重Weight

Weight是用来指定当前请求被路由的权重的,其接收两个参数:分组和权重,参与权重路由的地址必须在同一个分组,否则weight无效果,权重为整型数字文章来源地址https://www.toymoban.com/news/detail-757702.html

- id: app1
  uri: http://127.0.0.1:81
  predicates:
    - Path=/app1/**
    - Weight=group1,9

- id: app2
  uri: http://127.0.0.1:82
  predicates:
    - Path=/app2/**
    - Weight=group1,1

到了这里,关于Spring cloud Gateway常用配置的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • spring cloud gateway网关(一)之网关路由

    1、gateway相关介绍 在微服务架构中,系统往往由多个微服务组成,而这些服务可能部署在不同机房、不同地区、不同域名下。这种情况下,客户端(例如浏览器、手机、软件工具等)想要直接请求这些服务,就需要知道它们具体的地址信息,例如 IP 地址、端口号等。这种客户

    2024年02月08日
    浏览(41)
  • 三分钟了解Spring Cloud Gateway路由转发之自动路由

    大家好,我是冰点,今天和大家分享一下关于Spring Cloud Gateway 利用服务注册与发现实现自动路由的原理和源码解读。希望对大家有所帮助。 今天有个新同学,问我 为什么我们的网关服务Spring Cloud Gateway,没有配置路由就可以将请求到路由服务 ,说他们之前的项目的网关是将

    2024年02月08日
    浏览(35)
  • 第八章 : Spring cloud 网关中心 Gateway (动态路由)

    第八章 : Spring cloud 网关中心 Gateway (动态路由) 前言 本章知识点:重点介绍动态网关路由的背景、动态路由与静态路由的概念,以及如何基于Nacos实现动态网关路由 的实战案例。 背景 前面章节介绍了Spring Cloud Gateway提供的配置路由规则的两种方法,但都是在Spring Cloud Ga

    2024年01月19日
    浏览(46)
  • 【源码】Spring Cloud Gateway 是在哪里匹配路由的?

    我们知道,经过网关的业务请求会被路由到后端真实的业务服务上去,假如我们使用的是Spring Cloud Gateway,那么你知道Spring Cloud Gateway是在哪一步去匹配路由的吗? 源码之下无秘密,让我们一起从源码中寻找答案。 Spring Cloud Gateway 的入口为 DispatcherHandler 的 handle 方法,其中主

    2023年04月24日
    浏览(37)
  • 【深入解析spring cloud gateway】02 网关路由断言

    断言是路由配置的一部分,当断言条件满足,即执行Filter的逻辑,如下例所示 当请求路径满足条件/red/,即添加头信息:X-Request-Red,value为Blue-{segment},segment是路径里面带的信息。 gateWay的主要功能之一是转发请求,转发规则的定义主要包含三个部分 Route(路由) 路由是网关

    2024年02月09日
    浏览(40)
  • SpringGateway网关(Spring Gateway是Spring自己编写的,也是SpringCloud中的组件)

    目录 SpringGateway网关 奈非框架简介 什么是网关 网关的主要功能有 Spring Gateway简介 网关路由配置 动态路由 早期(2020年前)奈非提供的微服务组件和框架受到了很多开发者的欢迎 这些框架和SpringCloud Alibaba的对应关系我们要了解 现在还有很多旧项目维护是使用奈非框架完成的微

    2024年02月09日
    浏览(45)
  • 第七章 : Spring cloud 网关中心 Gateway (静态路由)

    第七章 : Spring cloud 网关中心 Gateway (静态路由) 前言 本章知识点:本章将会介绍什么是Spring Cloud Gateway、为什么会出现Spring Cloud Gateway,以及Spring Cloud Gateway的工作原理和实战用法,以及Spring Cloud Gateway 路由概念以及基于nacos注册中心Spring Cloud Gateway 静态路由的实战。 什么

    2024年02月02日
    浏览(55)
  • Spring-Cloud-Gateway-09-动态路由与自动刷新

    Spring-Cloud-Gateway-01-网关基本概念 Spring-Cloud-Gateway-02-请求调用基本流程 Spring-Cloud-Gateway-03-网关自动装配 Spring-Cloud-Gateway-04-HttpWebHandlerAdapter到DispatcherHandler调用流程 Spring-Cloud-Gateway-05-请求到HttpWebHandlerAdapter的调用链路 Spring-Cloud-Gateway-06-DispatcherHandler调用解析 Spring-Cloud-Gateway-07

    2024年02月01日
    浏览(34)
  • Spring Cloud Gateway 超时、CORS配置 | Spring Cloud 17

    Spring Cloud Gateway 可以为所有路由配置 Http 超时(响应和连接) ,并为每个特定路由覆盖设置。 配置全局 http 超时: connect-timeout 必须 以毫秒为单位 指定。 response-timeout 必须指定为 java.time.Duration 使用示例:

    2024年02月14日
    浏览(53)
  • Spring-Cloud-Gateway如何自定义路由过滤器?

    遇到这么一个面试题:自定义网关过滤器实现把url中的请求参数放到http的header中传递给微服务。 我们知道网关的一个重要的作用就是路由转发,路由表的配置大概是这个样子: 其中的filters就是配置的路由过滤器,Spring已经内置了31个路由的过滤器,这些过滤器都是 org.spring

    2024年02月16日
    浏览(36)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包