This is an automated email from the ASF dual-hosted git repository.
shreemaan-abhishek pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/apisix.git
The following commit(s) were added to refs/heads/master by this push:
new efef0e8413 docs(changelog): add the 3.18.0 section to the Chinese
changelog (#13843)
efef0e8413 is described below
commit efef0e8413aec9e3c3fb0e9dc8d48cf4c3fa4cb3
Author: Shreemaan Abhishek <[email protected]>
AuthorDate: Fri Sep 11 00:19:58 2026 +0800
docs(changelog): add the 3.18.0 section to the Chinese changelog (#13843)
Signed-off-by: Abhishek Choudhary <[email protected]>
---
docs/zh/latest/CHANGELOG.md | 179 ++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 179 insertions(+)
diff --git a/docs/zh/latest/CHANGELOG.md b/docs/zh/latest/CHANGELOG.md
index 3acc7c733b..16b828d7e3 100644
--- a/docs/zh/latest/CHANGELOG.md
+++ b/docs/zh/latest/CHANGELOG.md
@@ -23,6 +23,7 @@ title: 版本发布
## Table of Contents
+- [3.18.0](#3180)
- [3.8.0](#380)
- [3.7.0](#370)
- [3.6.0](#360)
@@ -75,6 +76,184 @@ title: 版本发布
- [0.7.0](#070)
- [0.6.0](#060)
+## 3.18.0
+
+**标记为 :warning: 的变更不向后兼容。**
+
+### Change
+
+- :warning: change(debug):按执行顺序上报已执行的插件及其阶段。`Apisix-Plugins` 调试响应头现在按执行顺序返回
`name#phase`
形式的条目,不再是去重后的插件名列表:[#13710](https://github.com/apache/apisix/pull/13710)
+- :warning: feat:限制插件中请求体与响应体的缓冲大小。约 19 个插件新增 `max_req_body_size` /
`max_resp_body_size`(默认 64
MiB),超出限制的请求体会被拒绝或截断,不再无限制缓冲:[#13705](https://github.com/apache/apisix/pull/13705)
+- :warning: fix(batch-processor):默认限制待处理条目的积压数量。所有基于 batch-processor 的日志插件的
`max_pending_entries` 默认值为
8192,超出后新条目会被丢弃:[#13826](https://github.com/apache/apisix/pull/13826)
+- :warning: refactor(ai-aws-content-moderation):在 access 阶段审核解析后的 LLM
内容。插件优先级由 1050 调整为 1031,现在必须与 ai-proxy/ai-proxy-multi
搭配使用,审核对象由原始请求体改为提取出的提示词,拒绝时返回 `deny_code`(默认 200)而不再是
400:[#13647](https://github.com/apache/apisix/pull/13647)
+- :warning: feat(ai-aliyun-content-moderation):支持按角色区分的
`request_check_mode`,并将内容分块改为 O(n) 实现。请求审核默认只覆盖最近一轮对话中的 user
角色内容,不再覆盖请求体中的全部消息:[#13598](https://github.com/apache/apisix/pull/13598)
+- :warning: fix(sls-logger):校验日志服务器的 TLS 证书。新增 `ssl_verify` 选项,默认为
`true`:[#13785](https://github.com/apache/apisix/pull/13785)
+- :warning: fix(openid-connect):强制校验 audience、issuer 与 required scopes。当
discovery 文档不可用时,bearer introspection 会直接失败(fail
closed);`claim_validator.audience.match_with_client_id` 现在隐含
`required`;`required_scopes` 在
session(授权码)流程中同样生效:[#13829](https://github.com/apache/apisix/pull/13829)
+- :warning: fix(admin):拒绝重复的 consumer
认证凭据,不再静默接受:[#13529](https://github.com/apache/apisix/pull/13529)
+- :warning: perf(core):在 NGINX 配置中完成 `X-Forwarded-*`
请求头的净化。`$var_x_forwarded_proto` 已移除,`$var_x_forwarded_host` 与
`$var_x_forwarded_port` 不再可从 Lua 写入;对于受信任的客户端,若其未发送
`X-Forwarded-Host`/`X-Forwarded-Port`,现在会收到 APISIX 实际观测到的值,不再回退到
`$host`/`$server_port`:[#13803](https://github.com/apache/apisix/pull/13803)
+- :warning: feat:新增 `max_post_args_readable_size`,限制 `post_arg.*`
读取的请求体大小。请求体超过 64 MiB 默认值时 `post_arg.*` 不再解析,依赖该匹配条件的路由将不再匹配它;可调大该值或设为 `0`
以恢复此前不受限的行为:[#13601](https://github.com/apache/apisix/pull/13601)
+- :warning: fix(ldap-auth):`tls_verify: true` 现在会真正校验证书,而此前固定版本的
`lua-resty-ldap` 会静默忽略该选项;使用自签名或主机名不匹配证书的 LDAP
服务器需改用受信任证书,或显式关闭校验:[#13762](https://github.com/apache/apisix/pull/13762)
+- :warning: fix(ldap-auth):使用转义后的 bind DN 作为 consumer 查找键。当用户名包含 RFC 4514
结构字符时,以此前未转义形式写入 `user_dn` 的 consumer 将不再匹配;需将这些值改写为转义形式,例如
`cn=comma\,user,ou=users,dc=example,dc=org`:[#13805](https://github.com/apache/apisix/pull/13805)
+- :warning: feat(prometheus):新增内置 LLM 直方图,用于 TTFT 与 token
分布。`apisix_llm_latency` 新增 `type` 标签,流式请求会同时上报 `type="total"` 与
`type="ttft"`,已有查询、仪表盘与告警需要加上
`type="total"`:[#13487](https://github.com/apache/apisix/pull/13487)
+- :warning: feat(ai-plugins):为 Consumer 绑定场景下的协议处理新增 `fail_mode`。其默认值 `skip`
会放行无法识别或非 AI 的流量,而不再按失败处理:`ai-aliyun-content-moderation` 与 `ai-prompt-guard`
不再返回错误,`ai-aws-content-moderation` 也不再将非 JSON 请求体作为原始文本审核。若此类流量必须被拒绝,请设置
`fail_mode: error`:[#13489](https://github.com/apache/apisix/pull/13489)
+
+### Core
+
+- feat:提高不可淘汰共享内存字典的默认大小:`prometheus-metrics` 15m/10m→128m、`nacos`
10m→64m、consul 与 kubernetes 服务发现的 `shared_size` 1m→64m、`tracing_buffer`
10m→32m:[#13688](https://github.com/apache/apisix/pull/13688)
+- chore(core):移除已失效的 `clean_handlers`
机制。`core.config_util.add_clean_handler`、`cancel_clean_handler` 和
`fire_all_clean_handlers`
不再存在:[#13761](https://github.com/apache/apisix/pull/13761)
+- feat(ai-proxy):通过 `ngx_http_ffi_client` 发送 LLM 请求。新增
`plugin_attr.ai-proxy.http_client` 配置项,默认使用该 FFI 客户端,它随本次发布所固定的 APISIX-Runtime
一同提供;若运行在自行构建、不含该模块的 runtime 上,请设置 `plugin_attr.ai-proxy.http_client:
lua-resty-http`:[#13778](https://github.com/apache/apisix/pull/13778)
+- feat:stream TCP 代理支持按端口启用 PROXY
protocol:[#13561](https://github.com/apache/apisix/pull/13561)
+- feat(stream):支持通过 `set_real_ip_from` 信任入站的 PROXY protocol
请求头:[#13700](https://github.com/apache/apisix/pull/13700)
+- feat(stream):L4
代理支持上游客户端证书(mTLS):[#13596](https://github.com/apache/apisix/pull/13596)
+- feat(router):新增 `match_uri_encoded_slash`,在路径参数中保留
`%2F`:[#13626](https://github.com/apache/apisix/pull/13626)
+- feat:主动健康检查支持 `http_method` 与
`http_req_body`:[#13726](https://github.com/apache/apisix/pull/13726)
+- feat(data_encryption):加密密钥环支持 AES-256
密钥:[#13756](https://github.com/apache/apisix/pull/13756)
+- refactor:将通用数据加密逻辑从 `ssl.lua`
中解耦:[#13564](https://github.com/apache/apisix/pull/13564)
+-
perf(plugin):在各阶段间复用已过滤的全局规则插件集合:[#13779](https://github.com/apache/apisix/pull/13779)
+- fix:健康状态变化时保持 chash
哈希环稳定:[#13532](https://github.com/apache/apisix/pull/13532)
+- fix(balancer):上游扩缩容时保留 least_conn
的负载状态:[#13666](https://github.com/apache/apisix/pull/13666)
+-
fix(balancer):按引用的客户端证书隔离长连接池:[#13587](https://github.com/apache/apisix/pull/13587)
+-
fix(healthcheck):上游仅节点变化时复用健康检查器,不再销毁重建:[#13629](https://github.com/apache/apisix/pull/13629)
+- fix(healthcheck):对域名节点使用其域名而非解析后的 IP
进行探测:[#13743](https://github.com/apache/apisix/pull/13743)
+-
fix(healthcheck):清理过期的探测目标并释放周期性锁:[#13627](https://github.com/apache/apisix/pull/13627)
+- fix(healthcheck):在健康检查定时器中对 `construct_upstream`
做保护:[#13592](https://github.com/apache/apisix/pull/13592)
+- fix(stream):为 TLS 证书解析初始化 env 与
secret:[#12935](https://github.com/apache/apisix/pull/12935)
+- fix:从上游 ssl 配置中获取
secret:[#13062](https://github.com/apache/apisix/pull/13062)
+- fix:`/secrets` 发生变更时失效 secret 的 LRU
缓存:[#13668](https://github.com/apache/apisix/pull/13668)
+- fix(secret):secret 引用无法解析时输出 error
日志:[#13737](https://github.com/apache/apisix/pull/13737)
+- fix:consumer 的 secret
引用解析失败时拒绝认证:[#13667](https://github.com/apache/apisix/pull/13667)
+- fix:对 `$upstream_uri` 中的控制字符进行编码,防止 CRLF
注入:[#13787](https://github.com/apache/apisix/pull/13787)
+- fix:配置 `trusted_addresses` 时,仅对不受信任的来源重置
`X-Forwarded-For`:[#13611](https://github.com/apache/apisix/pull/13611)
+- fix:统一 service 上 hosts
的大小写:[#13781](https://github.com/apache/apisix/pull/13781)
+- fix(plugin):合并 consumer
与路由配置时保留插件配置上的状态:[#13757](https://github.com/apache/apisix/pull/13757)
+- fix(resource):`fetch_latest_conf`
支持所有可携带插件的资源类型:[#13663](https://github.com/apache/apisix/pull/13663)
+-
fix(config_etcd):全量加载读到非法数据时保留原有配置:[#13717](https://github.com/apache/apisix/pull/13717)
+- fix(etcd):watch 超时后不再推进
revision,并降低恢复时全量加载的开销:[#13721](https://github.com/apache/apisix/pull/13721)
+- fix(json):让新建的 cjson 实例继承 APISIX 的 cjson
选项:[#13680](https://github.com/apache/apisix/pull/13680)
+- fix(env):修复 `env` 指令下 `os.getenv`
的前缀冲突问题:[#13595](https://github.com/apache/apisix/pull/13595)
+-
fix(cli):解析配置项名称中的环境变量后移除残留的旧键:[#12885](https://github.com/apache/apisix/pull/12885)
+- fix(cli):为 `nginx_config.envs`
中的条目加引号,使含空格的值可用:[#13713](https://github.com/apache/apisix/pull/13713)
+- fix(admin):加固 stream_route 的 `superior_id`
依赖检查:[#13672](https://github.com/apache/apisix/pull/13672)
+- fix(admin):仅在校验通过后再加密:[#13729](https://github.com/apache/apisix/pull/13729)
+- fix(admin):加密 stream route
内联上游中的客户端私钥:[#13833](https://github.com/apache/apisix/pull/13833)
+-
fix(admin):通过对账方式重载插件,不再依赖广播事件:[#13714](https://github.com/apache/apisix/pull/13714)
+- fix(control):`/v1/plugins/reload` 与 Admin API
重载路径保持一致的对账机制:[#13745](https://github.com/apache/apisix/pull/13745)
+- fix(log-sanitize):返回原始 table,避免重复
`delay_encode`:[#13605](https://github.com/apache/apisix/pull/13605)
+- fix(dns):修正 dns 客户端初始化中的 `error()`
调用:[#13358](https://github.com/apache/apisix/pull/13358)
+- fix:修复 dns 服务临时故障后出现 503
错误:[#13137](https://github.com/apache/apisix/pull/13137)
+- fix(cli):PROXY protocol 监听支持
IPv6:[#12859](https://github.com/apache/apisix/pull/12859)
+- fix(upstream):mTLS 错误判断使用 `cert` 与 `key`,不再使用已失效的
`ok`:[#13442](https://github.com/apache/apisix/pull/13442)
+- fix(core.request):`set_header`
需以归一化后的键更新请求头缓存:[#13517](https://github.com/apache/apisix/pull/13517)
+- fix(admin):修复每次 PATCH 都会重复加密
`encrypt_fields`:[#13525](https://github.com/apache/apisix/pull/13525)
+- fix(plugin):忽略已禁用或未知插件的
`plugin_metadata`:[#13514](https://github.com/apache/apisix/pull/13514)
+- fix(xrpc):修复禁用 Admin API 时,携带 xRPC 协议的 stream route 在 HTTP worker 中
`check_schema` 失败:[#13515](https://github.com/apache/apisix/pull/13515)
+- fix(secret):修复 secret 名称包含斜杠时 aws secret manager
获取失败:[#13519](https://github.com/apache/apisix/pull/13519)
+-
fix(consul):单个非法节点不应导致该服务其余节点被丢弃:[#13513](https://github.com/apache/apisix/pull/13513)
+- fix(nacos):在 stream 子系统中声明 `nacos-stream`
共享内存字典:[#13541](https://github.com/apache/apisix/pull/13541)
+- fix:数据库或凭据不同的 redis
连接不得共用同一长连接池:[#13516](https://github.com/apache/apisix/pull/13516)
+
+### Plugins
+
+- feat:新增 ai-cache 插件:[#13578](https://github.com/apache/apisix/pull/13578)
+-
feat(ai-cache):新增语义缓存(L2)层:[#13632](https://github.com/apache/apisix/pull/13632)
+-
feat(ai-cache):支持流式响应缓存,并标记响应格式:[#13644](https://github.com/apache/apisix/pull/13644)
+- feat:新增 ai-lakera-guard
插件:[#13570](https://github.com/apache/apisix/pull/13570)
+- feat(ai-lakera-guard):支持扫描 LLM 响应(direction 为
output/both,覆盖非流式与流式):[#13606](https://github.com/apache/apisix/pull/13606)
+- feat:新增 ldap-auth-advanced
插件:[#13762](https://github.com/apache/apisix/pull/13762)
+-
feat(ai-proxy-multi):新增语义负载均衡算法:[#13676](https://github.com/apache/apisix/pull/13676)
+- feat(ai-proxy):在 `llm_summary` 中包含 AI
可观测性变量:[#13609](https://github.com/apache/apisix/pull/13609)
+- feat(ai-rate-limiting):支持 redis policy
以共享计数器:[#13670](https://github.com/apache/apisix/pull/13670)
+- feat(ai-aws-content-moderation):支持审核 LLM
响应,包括流式响应:[#13735](https://github.com/apache/apisix/pull/13735)
+- feat(ai-aws-content-moderation):新增 `request_check_roles` 与
`request_check_mode`:[#13773](https://github.com/apache/apisix/pull/13773)
+- feat(ai-aliyun-content-moderation):支持审核 system 与 tool
角色的内容:[#13646](https://github.com/apache/apisix/pull/13646)
+- feat(prometheus):新增 AI 缓存命中、未命中、跳过以及 embedding
延迟指标:[#13659](https://github.com/apache/apisix/pull/13659)
+- feat(prometheus):新增 stream
活跃连接数、会话终止状态与带宽指标:[#13796](https://github.com/apache/apisix/pull/13796)
+- feat:新增
`log_format_extra`,用于在默认日志格式基础上补充字段:[#13568](https://github.com/apache/apisix/pull/13568)
+- feat(kafka-logger):支持以 TLS 连接 Kafka
broker:[#13607](https://github.com/apache/apisix/pull/13607)
+- feat(elasticsearch-logger):加密存储 `headers`
字段:[#13612](https://github.com/apache/apisix/pull/13612)
+- feat:加密 limit-count、limit-req 与 limit-conn 中的 `redis_password` 与
`sentinel_password`:[#13624](https://github.com/apache/apisix/pull/13624)
+- feat(proxy-rewrite):`headers.add`/`headers.set`
支持同名多值请求头:[#13597](https://github.com/apache/apisix/pull/13597)
+- feat(openid-connect):新增 `set_raw_id_token_header`
选项:[#13616](https://github.com/apache/apisix/pull/13616)
+- feat(openid-connect):支持 PAR 与 DPoP
客户端选项:[#13649](https://github.com/apache/apisix/pull/13649)
+- feat(ldap-auth):新增
`hide_credentials`:[#13832](https://github.com/apache/apisix/pull/13832)
+- fix(ai-request-rewrite):不再将下游客户端的请求头转发给所配置的 LLM 端点。内部改写调用现在只携带插件自身的凭据,因此
`Cookie` 等客户端请求头(以及当服务商使用其他认证方式时的
`Authorization`)不会再到达第三方端点:[#13699](https://github.com/apache/apisix/pull/13699)
+- refactor(cas-auth):移除多余的原始 Cookie
头兜底逻辑:[#13635](https://github.com/apache/apisix/pull/13635)
+- perf(zipkin):未采样的请求不再构造 span
tag:[#13656](https://github.com/apache/apisix/pull/13656)
+- perf(datadog):每批复用一个 UDP socket
并合并指标发送:[#13653](https://github.com/apache/apisix/pull/13653)
+- fix(loggly):将批处理回调绑定到各自路由的配置。此前模块级闭包会被最后写日志的路由覆盖,导致异步批次可能使用其他路由的 token
与标签发送;将其移出 log
阶段同时减少了每请求的一次分配:[#13648](https://github.com/apache/apisix/pull/13648)
+- fix(ai-proxy):保留上游返回的 429/5xx
错误响应体:[#13565](https://github.com/apache/apisix/pull/13565)
+- fix(ai-proxy):无 tools 时丢弃 `tool_choice`,并修复 Anthropic
流式响应挂起:[#13583](https://github.com/apache/apisix/pull/13583)
+- fix(ai-proxy):`tool_call` 参数非法时不再中断整个 Anthropic
响应:[#13599](https://github.com/apache/apisix/pull/13599)
+- fix(ai-proxy):修正 Anthropic Messages 到 OpenAI Chat
的请求转换:[#13674](https://github.com/apache/apisix/pull/13674)
+-
fix(ai-proxy):错误路径下的延迟变量以毫秒为单位上报:[#13711](https://github.com/apache/apisix/pull/13711)
+-
fix(ai-proxy-multi):故障转移重试时保持客户端请求体不被修改:[#13793](https://github.com/apache/apisix/pull/13793)
+-
fix(ai-protocols):在协议层将结构化的消息内容展平:[#13634](https://github.com/apache/apisix/pull/13634)
+- fix(ai-cache):精确缓存键保留非文本内容,并对其跳过 L2
缓存:[#13654](https://github.com/apache/apisix/pull/13654)
+- fix(ai-lakera-guard):调整 alert 模式行为并引入 `fail_open`
选项:[#13622](https://github.com/apache/apisix/pull/13622)
+- fix(ai-content-moderation):校验 `deny_code` 是合法的 HTTP
状态码:[#13692](https://github.com/apache/apisix/pull/13692)
+- fix(ai-content-moderation):realtime
模式下不再重复统计转换后的数据块:[#13765](https://github.com/apache/apisix/pull/13765)
+- fix(ai-content-moderation):支持审核 OpenAI 的 `developer`
角色:[#13780](https://github.com/apache/apisix/pull/13780)
+- fix(ai-aws-content-moderation):遵守 Comprehend
的分段限制并复用客户端:[#13767](https://github.com/apache/apisix/pull/13767)
+- fix(ai-aliyun-content-moderation):`lua_body_filter` 中返回 nil 而非
`ngx.OK`:[#13623](https://github.com/apache/apisix/pull/13623)
+-
fix(limit-count):滑动窗口限流器的检查与自增改为原子操作:[#13574](https://github.com/apache/apisix/pull/13574)
+- fix(limit-count):`commit()`
需按窗口加权上报剩余配额:[#13704](https://github.com/apache/apisix/pull/13704)
+- fix(limit-count):校验由变量解析得到的 `count`/`time_window`
取值范围:[#13573](https://github.com/apache/apisix/pull/13573)
+- fix(limit-count):升级 redis-cluster 依赖库,NOSCRIPT
不再被视为节点故障:[#13579](https://github.com/apache/apisix/pull/13579)
+- fix(limit-conn):通过 `_vid` 键按 workflow action
隔离计数器:[#13591](https://github.com/apache/apisix/pull/13591)
+- fix(limit-conn):使用父资源的 key 实现 consumer
维度隔离:[#13600](https://github.com/apache/apisix/pull/13600)
+- fix(redis-schema):复制 policy schema,不再修改共享
table:[#13555](https://github.com/apache/apisix/pull/13555)
+- fix(graphql-limit-count):计算查询深度时每个 fragment
只测量一次:[#13809](https://github.com/apache/apisix/pull/13809)
+- fix(key-auth):向 multi-auth
编排器传递真实的认证错误:[#13693](https://github.com/apache/apisix/pull/13693)
+- fix(basic-auth):按 schema 校验
`anonymous_consumer`:[#13682](https://github.com/apache/apisix/pull/13682)
+- fix(hmac-auth):隐藏 Authorization 请求头时传入
ctx:[#13820](https://github.com/apache/apisix/pull/13820)
+- fix(jwe-decrypt):`strict` 为 false 且请求中无 token
时跳过解密:[#13822](https://github.com/apache/apisix/pull/13822)
+- fix(cas-auth):SLO 回调的 POST
请求不再被转发到上游:[#13610](https://github.com/apache/apisix/pull/13610)
+- fix(openid-connect):授权回调过期时返回重定向而非
500:[#13712](https://github.com/apache/apisix/pull/13712)
+- fix(openid-connect):处理身份提供方返回的 `temporarily_unavailable`
错误重定向:[#13825](https://github.com/apache/apisix/pull/13825)
+- fix(wolf-rbac):认证响应中缺少 `userInfo`
时清理传给上游的身份请求头:[#13696](https://github.com/apache/apisix/pull/13696)
+-
fix(attach-consumer-label):始终丢弃客户端传入的、与配置同名的请求头:[#13590](https://github.com/apache/apisix/pull/13590)
+- fix(forward-auth):为认证请求重新封装已缓冲的 POST
请求体:[#13642](https://github.com/apache/apisix/pull/13642)
+-
fix(loki-logger):按请求解析日志标签,避免标签串用:[#13562](https://github.com/apache/apisix/pull/13562)
+- fix(loki-logger):加密 `headers`
字段:[#13784](https://github.com/apache/apisix/pull/13784)
+- fix(error-log-logger):不再记录 kafka 的 sasl
密码:[#13786](https://github.com/apache/apisix/pull/13786)
+- fix(datadog):限制合并后的 DogStatsD
数据报大小,超出时退回逐条发送:[#13665](https://github.com/apache/apisix/pull/13665)
+- fix(prometheus):截断 llm
模型名标签,限制指标基数:[#13637](https://github.com/apache/apisix/pull/13637)
+- fix(prometheus):将 nginx-lua-prometheus-api7 升级到 0.20260623
以消除重复指标:[#13602](https://github.com/apache/apisix/pull/13602)
+- fix(prometheus):将 nginx-lua-prometheus-api7 升级到
0.20260716:[#13708](https://github.com/apache/apisix/pull/13708)
+- fix(prometheus):将 nginx-lua-prometheus-api7 升级到
1.0.0:[#13754](https://github.com/apache/apisix/pull/13754)
+- fix(opentelemetry):插件元数据变更后重建 tracer
对象:[#13618](https://github.com/apache/apisix/pull/13618)
+- fix(opentelemetry):为 `inject_core_spans` 使用独立的 tracer
缓存键:[#13633](https://github.com/apache/apisix/pull/13633)
+- fix(opentelemetry):将 `x-request-id` 用作 `trace_id`
前先做校验:[#12990](https://github.com/apache/apisix/pull/12990)
+- fix(opentelemetry):元数据中 `additionalProperties` 的值类型改用
`oneOf`:[#13690](https://github.com/apache/apisix/pull/13690)
+-
fix(log-rotate):部分轮转失败后仍重新打开日志文件:[#13375](https://github.com/apache/apisix/pull/13375)
+- fix(workflow):跳过插件链中的 action
插件,避免重复执行:[#13617](https://github.com/apache/apisix/pull/13617)
+- fix(proxy-rewrite):修复开启 `use_real_request_uri_unsafe`
时查询字符串被丢弃:[#12843](https://github.com/apache/apisix/pull/12843)
+- fix(proxy-cache):使构造的请求无法触碰 Vary
变体的缓存键:[#13831](https://github.com/apache/apisix/pull/13831)
+- fix(grpc-transcode):将空的 repeated 字段编码为 JSON
数组:[#13678](https://github.com/apache/apisix/pull/13678)
+- fix(request-validation):调用 `lower()` 前判断 Content-Type
是否为字符串:[#13691](https://github.com/apache/apisix/pull/13691)
+- fix(data-mask):移除数组元素后压缩 JSON
数组:[#13818](https://github.com/apache/apisix/pull/13818)
+- fix:重新封装 serverless
插件转发给上游的请求体:[#13798](https://github.com/apache/apisix/pull/13798)
+- feat(limit-count):新增 Redis Sentinel
后端、滑动窗口与延迟同步支持:[#13443](https://github.com/apache/apisix/pull/13443)
+-
feat(prometheus):支持通过插件元数据禁用标签以降低指标基数:[#13202](https://github.com/apache/apisix/pull/13202)
+- feat(ai-proxy):新增用于 LLM 可观测性的内置 nginx
变量:[#13477](https://github.com/apache/apisix/pull/13477)
+- fix(kafka-logger):支持 `api_version`,使 broker
能够存储消息时间戳:[#13521](https://github.com/apache/apisix/pull/13521)
+- fix(ai-proxy-multi):健康检查器创建后刷新已缓存的 server
picker:[#13505](https://github.com/apache/apisix/pull/13505)
+-
fix(ai-proxy-multi):健康检查路径保留原有查询字符串:[#13506](https://github.com/apache/apisix/pull/13506)
+- fix(ai-proxy):passthrough
协议下转发客户端的请求方法与查询字符串:[#13546](https://github.com/apache/apisix/pull/13546)
+- fix(authz-casdoor):Casdoor token
过期时同步失效会话:[#13500](https://github.com/apache/apisix/pull/13500)
+- fix(request-id):使用 CSPRNG 生成 nanoid,避免重复与格式错误的
id:[#13508](https://github.com/apache/apisix/pull/13508)
+- fix(jwt-auth):JWT
签名格式错误时返回拒绝而非报错:[#13518](https://github.com/apache/apisix/pull/13518)
+- fix(workflow):log 阶段容忍 `_workflow_cache`
缺失:[#13512](https://github.com/apache/apisix/pull/13512)
+- fix(body-transformer):`remove_namespace` 改为重建
table,不在遍历过程中修改:[#13522](https://github.com/apache/apisix/pull/13522)
+- fix(aws-lambda):按规范构造 SigV4
规范化查询字符串:[#13520](https://github.com/apache/apisix/pull/13520)
+- fix(graphql-proxy-cache):PURGE 时清理全部 Vary
变体:[#13523](https://github.com/apache/apisix/pull/13523)
+- fix(limit-count):按数据库与凭据隔离 redis-sentinel
长连接池:[#13553](https://github.com/apache/apisix/pull/13553)
+- fix(brotli):非标准 ETag 属预期情况,不再以 error
级别记录:[#13545](https://github.com/apache/apisix/pull/13545)
+- fix(elasticsearch-logger):对非法索引模板下的 `os.date`
调用做保护:[#13542](https://github.com/apache/apisix/pull/13542)
+- fix(acl):正确处理 JSONPath
多匹配的标签:[#13527](https://github.com/apache/apisix/pull/13527)
+- fix:移除日志类插件中会泄露凭据的 debug
日志:[#13502](https://github.com/apache/apisix/pull/13502)
+- fix:字段级 schema 描述使用 `description` 而非
`title`:[#13547](https://github.com/apache/apisix/pull/13547)
+
## 3.8.0
### Core