# 数据接口路由配置
# 概述
通过对网关路由维护与管理,实现路由、过滤器、熔断、鉴权、限流、日志、监控等功,在服务管理上进行路由配置
# 本内容你将获得
- 路由的添加与修改
- 服务配置
- 熔断器配置
- 监控器配置
- 过滤器配置
- 限流器配置
- 鉴权器配置
# 路由的添加与修改
路由添加与修改步骤:
- 点击服务管理,进入服务管理页
- 点击创建网关服务按钮或点击已有服务 管理 > 编辑,进入路由配置页
- 进行路由配置
- 配置完成点击发布即可完成新增或修改
注意:
- RoutId、系统代号、名称、服务URL、断言Path是必填项
# 服务配置
- 网关服务URL: 用于配置后端服务URL,示例 http://server:port
- 断言Path: 用于匹配路由路径
- 断言Header:请求的头部需匹配该配置
- 过滤StripPrefix: 截取断言Path多节斜杠后内容,截取数量等于该配置的值
- 断言Host: 请求的Host需匹配该配置
- 断言RemoteAddr: 远程ip要匹配该值,示例: RemoteAddr=192.168.1.1/100
- 参数RequestParameter: 往请求添加参数,示例: RequestParameter=version,v1.0
- 重定向RewritePath: 将原始请求Path指向新的Path路径,但网关路由地址不变,如:/foo/abc指向/abc
# 熔断器配置
起用熔断器,当响应超时的时候,会触发降级,转到回调路径
- 全局方法:超时时长设置5000ms,默认回调路径fallbackUri: forward:/fallback
- 启用自定义:自定义超时时长及降级返回内容,回调路径fallbackUri: forward:/fallback/custom
# 过滤器配置
通过过滤器配置,与注册客户端相结合,起到过滤请求的作用
- IP过滤:注册的客户端配置的IP才可访问后端服务
- TOKEN过滤:请求头或参数带有注册客户端的token才可访问后端服务
- ID过滤:请求头或参数带有注册客户端的id才可访问后端服务
注意:
- IP过滤需要配置本网关路由的注册客户端,非注册客户端IP不可访问
- IP名单管理中的禁止通行的IP不可访问本网关路由
- TOKEN为注册客户端中的JWT通行令牌
# 限流器配置
基于令牌桶算法的限流器,根据IP、URI、REQUESTID来进行限流
- IP限流:当访问网关路由URL的IP数量,超出限流规则的约束,则直接拒决请求
- URI限流: 当访问网关路由URL的URI数量,超出限流规则的约束,则直接拒决请求
- REQUESTID限流:当访问网关路由URL的requestId参数数量,超出限流规则的约束,则直接拒决请求
代码中相对应KeyResolver:
// IP限流:
Mono.just(exchange.getRequest().getRemoteAddress().getAddress().getHostAddress());
// URI限流:
Mono.just(exchange.getRequest().getURI().getPath());
// REQUESTID限流:
Mono.justOrEmpty(exchange.getRequest().getQueryParams().getFirst("requestId")).defaultIfEmpty(""); // defaultIfEmpt("")用来防止返回为null
# 鉴权器配置
获取请求中信息,通过鉴权器下的配置验证获取的信息,不符合验证规则,则直接拒决请求
- HEADER验证: 请求中的所带的HEADER头部信息需与该配置匹配,示例:Accept-Language: zh-CN,zh;q=0.9
- IP验证: 如果启用IP过滤,则会先执行IP过滤后,再执行本IP验证,不符合验证规则,则直接拒决请求
- 参数验证: 获取URL请求串中的所带的参数,验证指定参数值,不符合验证规则,则直接拒决请求
- 时间验证: 只允许指定时间段内进行访问,不符合验证规则,则直接拒决请求,示例:08:00:00,20:00:00
- Cookie验证: 获取客户端请求所带的cookie信息,验证指定cookie参数值,不符合验证规则,则直接拒决请求
# 其他
- 无