限流
限流是针对高并发大模型服务的使用场景设计,保障系统的可用性。当前实现为单机限流,基于滑动时间窗口实现,可以配置时间窗口大小(秒)以及在一个时间窗口内限制的请求数。
操作步骤:
登录云原生API网关控制台,在顶部菜单栏选择资源池。
在左侧导航栏,选择 "AI网关-实例" ,进入实例概览。
在左侧导航栏,选择"Model API",然后单击目标API名称进入API详情页面。
单击策略与插件,找到入站处理卡片,单击启用策略/插件,在启用策略/插件面板中单击限流,填入限流策略配置并启用,单击保存按钮。
| 配置 | 说明 |
| 时间窗口 | 进行限流统计的时间窗口 |
| 限制请求 | 时间窗口内允许的最大请求次数,超出的请求将会被拒绝 |
跨域
跨域支持配置来源、方法、请求头、响应头、凭证等字段的配置。
操作步骤:
登录云原生API网关控制台,在顶部菜单栏选择资源池。
在左侧导航栏,选择 "AI网关-实例" ,进入实例概览。
在左侧导航栏,选择"Model API",然后单击目标API名称进入API详情页面。
单击策略与插件,找到入站处理/出站处理卡片,单击启用策略/插件,在启用策略/插件面板中单击跨域,填入跨域策略配置并启用,单击保存按钮。
| 配置项 | 说明 |
| 允许访问的来源 | 作用于 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 头部 |
| 开启状态 | 开启时才生效 |
外部认证授权
该策略支持通过第三方外部服务进行身份认证与授权。当身份认证失败时,可以实现自定义错误或者重定向到认证页面的场景。
操作步骤:
登录云原生API网关控制台,在顶部菜单栏选择资源池。
在左侧导航栏,选择 "AI网关-实例" ,进入实例概览。
在左侧导航栏,选择"Model API",然后单击目标API名称进入API详情页面。
单击策略与插件,找到入站处理卡片,单击启用策略/插件,在启用策略/插件面板中单击外部认证授权,填入外部认证授权策略配置并启用,单击保存按钮。
| 配置 | 说明 |
| 开启状态 | 开启时配置才生效 |
| 服务地址 | 设置外部认证服务的地址(例如: https://localhost:9188) |
| 请求方法 | 客户端向认证服务发送请求的方法。当设置为 POST 时,会将请求体转发给认证服务 |
| 转发到认证服务的请求头 | 设置需要由客户端转发给认证服务的请求头。如果没有设置,则只发送如 X-Forwarded-XXX 的请求头 |
| 转发给上游服务的请求头 | 认证通过时,由认证服务转发给上游服务的响应头。如果不设置则不转发任何响应头 |
| 转发给客户端的请求头 | 认证失败时,由认证服务向客户端发送的响应头。如果不设置则不转发任何响应头 |
| 验证 ssl 证书 | 当开启时,验证 SSL 证书,默认开启 |
| 认证服务请求超时时间 | 认证服务请求超时时间,单位毫秒(ms) |
| 长连接超时时间 | 长连接超时时间,单位毫秒(ms) |
熔断
该策略支持给上游服务配置熔断规则,发现上游服务不可用时,快速失败,等恢复了再慢慢试探,防止整个系统雪崩。
操作步骤:
登录云原生API网关控制台,在顶部菜单栏选择资源池。
在左侧导航栏,选择 "AI网关-实例" ,进入实例概览。
在左侧导航栏,选择"Model API",然后单击目标API名称进入API详情页面。
单击策略与插件,找到入站处理卡片,单击启用策略/插件,在启用策略/插件面板中单击熔断,填入熔断策略配置并启用,单击保存按钮。
| 配置 | 说明 |
| 开启状态 | 开启时配置才生效 |
| 上游服务健康状态码 | 上游服务处于健康状态时的HTTP状态码 |
| 上游服务连续正常请求次数 | 上游服务触发健康状态的连续正常请求次数 |
| 上游服务不健康状态码 | 上游服务处于不健康状态时的 HTTP状态码 |
| 触发异常请求次数 | 上游服务在一定时间内触发不健康状态的异常请求次数 |
| 熔断最大持续时间 | 上游服务熔断的最大持续时间,以秒为单位 |
| 不健康返回错误码 | 当上游服务处于不健康状态时返回的 HTTP错误码 |
| 不健康返回响应体信息 | 当上游服务处于不健康状态时返回的 HTTP响应体信息 |
| 不健康返回响应头信息 | 当上游服务处于不健康状态时返回的 HTTP响应头信息。该字段仅在配置了不健康返回响应体信息时才生效 |
黑白名单
Model API支持通过配置 IP 黑名单和白名单的方式限制客户端访问;黑白名单不能同时开启,只有一种能生效。
云原生网关默认读取请求中的 Remote_addr 字段值作为客户端 IP(即网络层 IP);如果您的客户端访问出口存在七层代理,此时 Remote_addr 字段值为出口代理地址,可通过开启从 xff 头部获取 IP 配置选项,从 X-Forwarded-For 字段中获取客户端真实 IP。
操作步骤:
登录云原生API网关控制台,在顶部菜单栏选择资源池。
在左侧导航栏,选择 "AI网关-实例" ,进入实例概览。
在左侧导航栏,选择"Model API",然后单击目标API名称进入API详情页面。
单击策略与插件,找到入站处理卡片,单击启用策略/插件,在启用策略/插件面板中单击黑白名单,填入黑白名单策略配置并启用,单击保存按钮。
| 配置 | 说明 |
| 是否从 xff 头部获取IP | 是否从 X-Forwarded-For 字段中获取客户端真实IP,若不开启,则默认从请求中的remote-addr中获取IP |
| 黑名单 | 支持单/多个IP地址或类似 10.10.10.0/24的CIDR范围配置,每个条目一行,以回车分隔 |
| 白名单 | 支持单/多个IP地址或类似 10.10.10.0/24的CIDR范围配置,每个条目一行,以回车分隔 |
| 开启状态 | 开启时配置才生效 |
防重放
防止攻击者重复发送已截获的合法请求,避免重复操作或数据异常。开启后,请求头必须包含 x-ca-timestamp 和 x-ca-nonce 参数。
操作步骤:
登录云原生API网关控制台,在顶部菜单栏选择资源池。
在左侧导航栏,选择 "AI网关-实例" ,进入实例概览。
在左侧导航栏,选择"Model API",然后单击目标API名称进入API详情页面。
单击策略与插件,找到入站处理卡片,单击启用策略/插件,在启用策略/插件面板中单击防重放,填入防重放策略配置并启用,单击保存按钮。
| 配置 | 说明 |
| 时间窗口 | 时间窗口内不可重复请求,请求时间超过时间窗口为无效请求 |
| 开启状态 | 开启时配置才生效 |
Header设置
Header设置策略允许用户新增/修改/删除响应头。
操作步骤:
登录云原生API网关控制台,在顶部菜单栏选择资源池。
在左侧导航栏,选择 "AI网关-实例" ,进入实例概览。
在左侧导航栏,选择"Model API",然后单击目标API名称进入API详情页面。
单击策略与插件,找到出站处理卡片,单击启用策略/插件,在启用策略/插件面板中单击Header设置,填入Header设置策略配置并启用,单击保存按钮。
| 配置 | 说明 |
| 开启状态 | 开启时策略才生效 |
| Header 类型 | 网关与后端交互时支持对请求和应答的头部做修改。Model API仅支持对响应头做修改 |
| 操作类型 | 支持新增、修改、删除操作 新增:若 header key 已存在,则在末尾追加 header value;否则新增 修改:若 header key 不存在,则新增 header kv;否则覆盖已有 header value 值 删除:若 header key 存在,则删除;否则忽略该header key |
| Header Key | 指定Header Key |
| Header Value | 新增/修改操作时指定Header Value |
ProxyCookie设置
该策略支持对上游响应 Set-Cookie 头部重写,当前支持对 Set-Cookie 头部里的 Domain 和 Path 进行重写。
操作步骤:
登录云原生API网关控制台,在顶部菜单栏选择资源池。
在左侧导航栏,选择 "AI网关-实例" ,进入实例概览。
在左侧导航栏,选择"Model API",然后单击目标API名称进入API详情页面。
单击策略与插件,找到出站处理卡片,单击启用策略/插件,在启用策略/插件面板中单击ProxyCookie设置,填入ProxyCookie设置策略配置并启用,单击保存按钮。
| 配置 | 说明 |
| proxy_cookie_domain 匹配规则 | 匹配上游应答 Set-Cookie 头部的 Domain 字段,支持正则匹配 |
| proxy_cookie_domain 替换值 | 如果匹配,Set-Cookie 头部 Domain 字段将被替换成该配置值 |
| proxy_cookie_path 匹配规则 | 匹配上游应答 Set-Cookie 头部的 Path 字段,支持正则匹配 |
| proxy_cookie_path 替换值 | 如果匹配,Set-Cookie 头部 Path 字段将被替换成该配置值 |
添加插件
操作步骤:
登录云原生API网关控制台,在顶部菜单栏选择资源池。
在左侧导航栏,选择 "AI网关-实例" ,进入实例概览。
在左侧导航栏,选择"Model API",然后单击目标API名称进入API详情页面。
单击策略与插件,找到入站处理/出站处理卡片,单击启用策略/插件。
在启用策略/插件面板中切换至添加插件tab页,找到目标插件卡片。
● 如果插件未安装:单击插件卡片,选择需要安装的实例,并单击安装按钮。
● 如果插件已安装:单击插件卡片,单击插件卡片,在插件编辑面板中选中启用状态,并单击保存。