概述
在路由详情页的 "策略配置" 标签页中可以配置路由策略,当前支持限流、重写、Header配置、跨域、Query参数设置、Cookie重写、外部认证授权、熔断、黑白名单、防重放和Fallback服务策略配置。
操作步骤
进入目标路由的 "策略配置" 标签页。
单击需要变更的策略,在右侧配置页中修改相关配置后,单击 "保存"。
限流
当前实现为单机限流,基于时间窗口实现,可以配置时间窗口大小(秒)以及在一个时间窗口内限制的请求数。
| 配置 | 说明 |
|---|---|
| 时间窗口 | 进行限流统计的时间窗口 |
| 限制请求 | 时间窗口内允许的最大请求次数,超出的请求将会被拒绝。 |
重写
重写策略可以实现请求向上游转发请求时重写path和host。
配置参数说明如下:
| 配置 | 说明 |
|---|---|
| 重写路径匹配类型 | 支持精确匹配、前缀匹配和正则匹配,只有路径匹配的请求才会对路径进行重写。 |
| 重写路径 | 重写的目标路径。 |
| 重写主机域名 | 重写的目标主机域名。 |
Header配置
Header配置支持对请求和响应的头部做修改。
配置参数说明:
| 配置 | 说明 |
|---|---|
| 开启状态 | 开启时策略才生效。 |
| Header类型 | 网关与后端交互时支持对请求和应答的头部做修改。 |
| 操作类型 | 支持新增、修改、删除操作。 新增:若header key已存在,则在末尾追加header value;否则新增。 修改:若header key不存在,则新增header kv;否则覆盖已有header value值。 删除:若header key存在,则删除;否则忽略该header key。 |
| Header Key | 头部Key。 |
| Header Value | 头部Value。 |
跨域设置
云原生网关支持路由级别的跨域资源共享(CORS)。
CORS配置说明如下:
| 配置项 | 说明 |
|---|---|
| 允许访问的来源 | 作用于Access-Control-Allow-Origin头部,格式如:scheme://host:port,比如: https://foo.ctyun.com:8080,多个值使用','分割,'*'表示所有Origin均允许通过。 |
| 允许的方法 | 作用于Access-Control-Allow-Methods头部,表示允许的访问方法。 |
| 允许的请求头部 | 作用于Access-Control-Allow-Headers头部,允许跨域访问时请求方携带哪些CORS规范以外的Header,多个值使用','分割,'*'来表示所有Header均允许通过。 |
| 允许的响应头部 | 作用于Access-Control-Expose-Headers头部,允许浏览器和js脚本访问的响应头部。 |
| 允许携带凭证 | 作用于Access-Control-Allow-Credentials头部。 |
| 预检的过期时间 | 作用于Access-Control-Max-Age头部。 |
| 开启状态 | 开启时才生效。 |
ProxyCookie配置
该配置支持对上游响应Set-Cookie头部重写,当前支持对Set-Cookie头部里的Domain和Path进行重写。
配置项说明:
| 配置项 | 说明 |
|---|---|
| proxy_cookie_domain匹配规则 | 匹配上游应答Set-Cookie头部的Domain字段,支持正则匹配。 |
| proxy_cookie_domain替换值 | 如果匹配,Set-Cookie头部Domain字段将被替换成该配置值。 |
| proxy_cookie_path匹配规则 | 匹配上游应答Set-Cookie头部的Path字段,支持正则匹配。 |
| proxy_cookie_path替换值 | 如果匹配,Set-Cookie头部Path字段将被替换成该配置值。 |
Query参数设置
该配置支持对请求参数进行修改。
配置项说明:
| 配置 | 说明 |
|---|---|
| 开启状态 | 开启时策略才生效。 |
| 操作类型 | 支持新增、修改、删除操作。 新增:若请求参数已存在,则在末尾追加;否则新增。 修改:若请求参数不存在,则新增该参数;否则覆盖已有参数值。 删除:若请求参数存在,则删除;否则忽略该参数。 |
| 参数名 | 请求参数key。 |
| 参数值 | 请求参数Value。 |
外部认证授权
该配置支持通过第三方外部服务进行身份认证与授权。当身份认证失败时,可以实现自定义错误或者重定向到认证页面的场景。
配置项说明:
| 配置 | 说明 |
|---|---|
| 开启状态 | 开启时配置才生效。 |
| 服务地址 | 设置外部认证服务的地址(例如:https://localhost:9188)。 |
| 请求方法 | 客户端向认证服务发送请求的方法。当设置为POST时,会将请求体转发给认证服务。 |
| 转发到认证服务的请求头 | 设置需要由客户端转发给认证服务的请求头。如果没有设置,则只发送如X-Forwarded-XXX的请求头。 |
| 转发给上游服务的请求头 | 认证通过时,由认证服务转发给上游服务的响应头。如果不设置则不转发任何响应头。 |
| 转发给客户端的请求头 | 认证失败时,由认证服务向客户端发送的响应头。如果不设置则不转发任何响应头。 |
| 验证ssl证书 | 当开启时,验证SSL证书,默认开启。 |
| 认证服务请求超时时间 | 认证服务请求超时时间。 |
| 长连接超时时间 | 长连接超时时间。 |
熔断设置
该配置支持在触发上游服务不健康状态时进行熔断,从而保护上游业务服务。
配置项说明:
| 配置 | 说明 |
|---|---|
| 开启状态 | 开启时配置才生效。 |
| 上游服务健康状态码 | 上游服务处于健康状态时的HTTP状态码。 |
| 上游服务连续正常请求次数 | 上游服务触发健康状态的连续正常请求次数。 |
| 上游服务不健康状态码 | 上游服务处于不健康状态时的HTTP状态码。 |
| 触发异常请求次数 | 上游服务在一定时间内触发不健康状态的异常请求次数。 |
| 熔断最大持续时间 | 上游服务熔断的最大持续时间,以秒为单位。 |
| 不健康返回错误码 | 当上游服务处于不健康状态时返回的HTTP错误码。 |
| 不健康返回响应体信息 | 当上游服务处于不健康状态时返回的HTTP响应体信息。 |
| 不健康返回响应头信息 | 当上游服务处于不健康状态时返回的HTTP响应头信息。该字段仅在配置了不健康返回响应体信息时才生效。 |
黑白名单
云原生网关支持通过配置IP黑名单和白名单的方式限制客户端访问网关;黑白名单不能同时开启,同时只有一种能生效。
云原生网关默认读取请求中的Remote_addr字段值作为客户端IP(即网络层IP);如果您的客户端访问出口存在七层代理,此时Remote_addr字段值为出口代理地址,可通过开启从xff头部获取ip配置选项,从X-Forwarded-For字段中获取客户端真实IP。
| 配置 | 说明 |
|---|---|
| 是否从xff头部获取IP | 是否从X-Forwarded-For字段中获取客户端真实IP。 |
| 黑名单 | 黑名单IP配置。 |
| 白名单 | 白名单IP配置。 |
防重放
防止攻击者重复发送已截获的合法请求,避免重复操作或数据异常。
开启后,请求头必须包含x-ca-timestamp和x-ca-nonce参数。
| 配置 | 说明 |
|---|---|
| 时间窗口 | 时间窗口内不可重复请求,请求时间超过时间窗口为无效请求。 |
Fallback服务
云原生API网关支持对HTTP类型的API下路由在单服务场景下配置Fallback服务,当后端目标服务异常不可用时,网关会将流量转发到Fallback服务中。
| 配置 | 说明 |
|---|---|
| 服务 | 当请求的目标服务不可用时,请求需要转发的fallback服务。 |