更新日志
3.10.8
发布日期:2026-10-09
不兼容变更
插件
-
升级说明
通过远程 introspection 校验 Token 时,
claim_validator.issuer.valid_issuers中的签发者白名单现在会真正生效。introspection 响应中的iss缺失或不在白名单内时,请求会被拒绝,返回HTTP 401和WWW-Authenticate: Bearer realm="apisix", error="invalid_token", error_description="issuer validation failed",请求不会到达上游。在 3.10.7 上,introspection 路径不会应用这份白名单,这样的 Token 会被转发到上游。升级前,请检查所有同时配置了
introspection_endpoint和claim_validator.issuer.valid_issuers的openid-connect路由,确认身份提供方的 introspection 响应中带有位于白名单内的iss。 -
升级说明
数据面现在会按照 SAML 规范的要求校验 SAML 响应,且无需任何新增配置。出现以下任一情况时,登录会被拒绝:断言带有
AudienceRestriction,但其中没有列出本服务提供方(未设置sp_audiences时即sp_issuer);断言的使用时间超出其NotBefore与NotOnOrAfter窗口 60 秒以上;断言的Recipient,或响应的Destination,与本服务提供方的断言消费服务(ACS)URL 不一致;断言对应的登录请求并非当前会话发起的那一个。此外,身份信息现在只会从已验证签名覆盖的断言中读取。在 3.10.7 上,以上各项都不会被检查。未设置
sp_acs_url时,ACS URL 由回调请求的协议和主机拼出。如果网关部署在终止 TLS 却不设置X-Forwarded-Proto、或会改写主机名的负载均衡器或 Ingress 之后,网关拼出的 URL 就会与身份提供方写入Recipient的 URL 不一致,升级后所有登录都会被拒绝。升级数据面前,请为部署在此类代理之后的路由把
sp_acs_url设置为对外的回调 URL;如果身份提供方签发断言时使用的受众不是sp_issuer,请设置sp_audiences;并确保网关的时钟已同步。网关实例升级时正在进行中的登录会重新开始,而不会被拒绝。 -
batch-requests
升级说明在 3.10.1 引入的子请求数量上限之外,该插件现在还会限制其聚合的响应体大小。单个子响应超过
max_response_body_size(默认1048576字节,即 1 MiB),或一个批次的子响应合计超过max_response_body_size_total(默认10485760字节,即 10 MiB)时,会返回HTTP 502,例如{"error_msg":"response body of pipeline request 1 exceeds max_response_body_size"}。没有Content-Length的子响应同样会被计量。在 3.10.7 上,这两项限制都不存在,每个子响应体都会被完整缓存。两项限制都是
batch-requests插件元数据的配置项。如果业务依赖批量获取大响应,请在升级数据面前调大这两个值。 -
升级说明
每条规则的
actions现在必须恰好包含一个[name, conf]。带有多余元素的动作和包含多个动作的规则,在 3.10.7 上会被接受、存储并正常运行。控制面现在会拒绝这两种形状,返回HTTP 400和指明问题的消息,例如invalid workflow plugin: invalid action: expected [name, conf]或workflow plugin: rules.0.actions: Array must have at most 1 items。升级前已存储的这两种形状的 workflow 配置,在其网关实例升级后会成为配置兼容性报告中的 error 级别条目,需要先改正才能再次编辑。
升级须知
Stream 路由现在可以通过控制面配置 sni、snis 和 tls_passthrough。Stream 路由带有数据面不支持的字段时,数据面会拒绝整条 Stream 路由,该路由在对应网关实例上随即停止服务。snis 从 3.10.8 起才被支持,因此 3.10.7 及更早版本的数据面会拒绝设置了它的 Stream 路由;tls_passthrough 从 3.10.7 起被支持。
API7 企业版按先控制面、后数据面的顺序升级。在网关组的所有数据面都运行 3.10.8 之前,不要在 Stream 路由上配置 snis;只要还有数据面低于 3.10.7,就不要使用 tls_passthrough。单个 sni 在本控制面接受的所有数据面版本上都受支持。
新功能
插件
- SAML Auth
- 新增若干配置项,用于收紧或调整登录响应的校验方式。
idp_issuers限定接受哪些签发者;sp_audiences设置本服务提供方所对应的受众;sp_acs_url固定断言消费服务 URL,而不是由请求拼出;clock_skew设置断言时间戳的容差(默认60秒)。replay_dict指定一个共享字典,已接受的断言会在其中保存到它不再可被接受为止再加上clock_skew,不带过期时间的断言则保存replay_ttl秒(默认600),使每条断言在同一个网关实例上只能被接受一次。字典已满时,登录仍会成功,但该断言不会被记录,网关会记录一条错误日志。网关默认为此声明了plugin-saml-auth-replay(10 MiB),其大小可在网关配置文件的nginx_config.http.lua_shared_dict下修改。
- 新增若干配置项,用于收紧或调整登录响应的校验方式。
- OpenAPI to MCP
- 新增
cache_enabled(默认true)和cache_ttl(默认3600秒),使每条路由可以自行决定其 OpenAPI 文档生成的工具缓存多久。把cache_enabled设为false后,每个会话都会重新读取文档,适合文档仍在变动的情况。这两个配置项需要api7/openapi-to-mcp边车 1.0.5 或更高版本;本版本随附 1.0.6。
- 新增
- Limit Count、Limit Count Advanced、GraphQL Limit Count、Limit Conn、Limit Req、AI Rate Limiting 和 AI Cache