apisix/docs/zh/latest/CHANGELOG.md
罗泽轩 52bbd18aa3
feat: release 2.13.0 (#6716)
Co-authored-by: zhixiongdu <root@libssl.com>
Co-authored-by: tzssangglass <tzssangglass@gmail.com>
2022-03-25 12:07:38 +08:00

59 KiB
Raw Blame History

title
CHANGELOG

Table of Contents

2.13.0

Change

  • 更正 syslog 插件的配置 #6551
  • server-info 插件使用新方法来上报 DP 面信息 #6202
  • Admin API 返回的空 nodes 应当被编码为数组 #6384
  • 更正 prometheus 统计指标 apisix_nginx_http_current_connections{state="total"} #6327
  • 不再默认暴露 public API 并移除 plugin interceptor #6196

Core

  • 🌅 新增 delayed_body_filter 阶段 #6605
  • 🌅 standalone 模式的配置支持环境变量 #6505
  • 🌅 consumer 新增的插件都能被执行 #6502
  • 🌅 添加配置项来控制是否在 x-upsream-apisix-status 中记录所有状态码 #6392
  • 🌅 新增 kubernetes 服务发现 #4880
  • 🌅 graphql 路由支持 JSON 类型和 GET 方法 #6343

Plugin

  • 🌅 jwt-auth 支持自定义参数名 #6561
  • 🌅 cors 参数支持通过 plugin metadata 配置 #6546
  • 🌅 openid-connect 支持 post_logout_redirect_uri #6455
  • 🌅 mocking 插件 #5940
  • 🌅 error-log-logger 新增 clickhouse 支持 #6256
  • 🌅 clickhouse 日志插件 #6215
  • 🌅 grpc-transcode 支持处理 .pb 文件 #6264
  • 🌅 loggly 日志插件 #6113
  • 🌅 opentelemetry 日志插件 #6119
  • 🌅 public api 插件 #6145
  • 🌅 CSRF 插件 #5727

Bugfix

  • 修复 skywalking,opentelemetry 没有追踪认证失败的问题 #6617
  • log-rotate 切割日志时按整点完成 #6521
  • deepcopy 没有复制 metatable #6623
  • request-validate 修复对 JSON 里面重复键的处理 #6625
  • prometheus 避免重复计算指标 #6579
  • 修复 proxy-rewrite 中,当 conf.headers 缺失时conf.method 不生效的问题 #6300
  • 修复 traffic-split 首条规则失败时无法匹配的问题 #6292
  • etcd 超时不应触发 resync_delay #6259
  • 解决 proto 定义冲突 #6199
  • limit-count 配置不变,不应重置计数器 #6151
  • Admin API 的 plugin-metadata 和 global-rule 计数有误 #6155
  • 解决合并 route 和 service 时 labels 丢失问题 #6177

2.12.1

这是一个 LTS 维护版本,您可以在 release/2.12 分支中看到 CHANGELOG。

2.12.0

Change

  • 重命名 serverless 插件的 "balancer" phase 为 "before_proxy" #5992
  • 不再承诺支持 Tengine #5961
  • 当 L4 支持 和 Admin API 都启用时,自动开启 HTTP 支持 #5867

Core

  • 🌅 支持 TLS over TCP upstream #6030
  • 🌅 支持自定义 APISIX variable #5941
  • 🌅 支持集成 Vault #5745
  • 🌅 支持 L4 的 access log #5768
  • 🌅 支持自定义 http_server_location_configuration_snippet 配置 #5740
  • 🌅 支持配置文件环境变量中设置默认值 #5675
  • 🌅 支持在 header_filter 阶段运行 Wasm 代码 #5544

Plugin

  • 🌅 支持在 basic-auth 中隐藏 Authorization 请求头 #6039
  • 🌅 支持动态设置 proxy_request_buffering #6075
  • 🌅 mqtt 支持通过 client id 负载均衡 #6079
  • 🌅 添加 forward-auth 插件 #6037
  • 🌅 支持 gRPC-Web 代理 #5964
  • 🌅 limit-count 支持请求间共享计数器 #5984
  • 🌅 limit-count 支持在路由间共享计数器 #5881
  • 🌅 新增 splunk hec logging 插件 #5819
  • 🌅 新增 OPA 插件 #5734
  • 🌅 新增 rocketmq logger 插件 #5653
  • 🌅 mqtt 支持直接使用 route 上配置的 upstream #5666
  • 🌅 ext-plugin 支持获取请求体 #5600
  • 🌅 新增 aws lambda 插件 #5594
  • 🌅 http/kafka-logger 插件支持记录响应体 #5550
  • 🌅 新增 Apache OpenWhisk 插件 #5518
  • 🌅 支持 google cloud logging service #5538

Bugfix

  • 同时启用 error-log-logger 和 prometheusis 时报告 labels inconsistent 的问题 #6055
  • 支持禁止 IPv6 IP 解析 #6023
  • 正确处理 MQTT 5 中的 properties #5916
  • sls-logger 上报的 timestamp 补上毫秒部分 #5820
  • MQTT 中的 client id 可以为空 #5816
  • ext-plugin 避免使用过期的 key #5782
  • 解决 log-rotate 中 reopen log 和压缩中的 race #5715
  • 释放 batch-processor 中过期对象 #5700
  • 解决被动健康检查时配置被污染的问题 #5589

2.11.0

Change

  • wolf-rbac 插件变更默认端口,并在文档中增加 authType 参数 #5477

Core

  • 🌅 支持基于 POST 表单的高级路由匹配 #5409
  • 🌅 初步的 WASM 支持 #5288
  • 🌅 control API 暴露 service 配置 #5271
  • 🌅 control API 暴露 upstream 配置 #5259
  • 🌅 支持在 etcd 少于半数节点不可用时成功启动 #5158
  • 🌅 支持 etcd 配置里面自定义 SNI #5206

Plugin

  • 🌅 新增 Azure-functions 插件 #5479
  • 🌅 kafka-logger 支持动态记录请求体 #5501
  • 🌅 新增 skywalking-logger 插件 #5478
  • 🌅 新增 datadog 插件 #5372
  • 🌅 limit-* 系列插件,在 key 对应的值不存在时,回退到用客户端地址作为限流的 key #5422
  • 🌅 limit-count 支持使用多个变量作为 key #5378
  • 🌅 limit-conn 支持使用多个变量作为 key #5354
  • 🌅 proxy-rewrite 支持改写 HTTP method #5292
  • 🌅 limit-req 支持使用多个变量作为 key #5302
  • 🌅 proxy-cache 支持基于内存的缓存机制 #5028
  • 🌅 ext-plugin 避免发送重复的 conf 请求 #5183
  • 🌅 新增 ldap-auth 插件 #3894

2.10.4

这是一个 LTS 维护版本,您可以在 release/2.10 分支中看到 CHANGELOG。

https://github.com/apache/apisix/blob/release/2.10/CHANGELOG.md#2104

2.10.3

这是一个 LTS 维护版本,您可以在 release/2.10 分支中看到 CHANGELOG。

https://github.com/apache/apisix/blob/release/2.10/CHANGELOG.md#2103

2.10.2

这是一个 LTS 维护版本,您可以在 release/2.10 分支中看到 CHANGELOG。

https://github.com/apache/apisix/blob/release/2.10/CHANGELOG.md#2102

2.10.1

这是一个 LTS 维护版本,您可以在 release/2.10 分支中看到 CHANGELOG。

https://github.com/apache/apisix/blob/release/2.10/CHANGELOG.md#2101

2.10.0

Change

  • 将 enable_debug 配置从 config.yaml 移到 debug.yaml #5046
  • 更改自定义 lua_shared_dict 配置的名称 #5030
  • 不再提供 APISIX 安装 shell 脚本 #4985

Core

  • 🌅 debug-mode 支持动态请求过滤 #5012
  • 🌅 支持注入逻辑到 APISIX 方法中 #5068
  • 🌅 支持配置 fallback SNI #5000
  • 🌅 stream_route 支持在 IP 匹配中使用 CIDR #4980
  • 🌅 支持 route 从 service 中继承 hosts #4977
  • 🌅 改善数据面监听地址的配置 #4856

Plugin

  • 🌅 hmac-auth 支持校验请求体 #5038
  • 🌅 proxy-mirror 支持控制镜像流量的比例 #4965
  • 🌅 referer-restriction 增加黑名单和自定义信息 #4916
  • 🌅 kafka-logger 增加 cluster 支持 #4876
  • 🌅 kafka-logger 增加 required_acks 选项 #4878
  • 🌅 uri-blocker 支持大小写无关的匹配 #4868

Bugfix

  • radixtree_host_uri 路由更正匹配结果的 host #5124
  • radixtree_host_uri 路由更正匹配结果的 path #5104
  • Nacos 服务发现,区分处于不同 group/namespace 的同名 service #5083
  • Nacos 服务发现,当一个服务的地址获取失败后,继续处理剩下的服务 #5112
  • 匹配 SNI 时需要大小写无关 #5074
  • upstream 的 keepalive_pool 配置,缺省时不应覆盖默认的 keepalive 配置 #5054
  • DNS 服务发现,优先查询 SRV 记录 #4992
  • Consul 服务发现,重试前需等待一段时间 #4979
  • 当 upstream domain 背后的 IP 改变时,避免复制多余数据 #4952
  • 当 plugin_config 变化时,恢复之前被覆盖的配置 #4888

2.9.0

Change

  • 为避免误解,将插件中的 balancer 方法改成 before_proxy #4697

Core

  • 🌅 增大总 timer 数的限制 #4843
  • 🌅 移除禁止额外字段的检验,方便给 APISIX 做 A/B 测试 #4797
  • 🌅 支持在 arg 变量中使用 '-' (#4519) #4676
  • 🌅 Admin API 拒绝错误的 proto 文件内容 #4750

Plugin

  • 🌅 ext-plugin 插件允许 Runner 查询请求信息 #4835
  • 🌅 gzip 插件支持通过 * 匹配任意类型 #4817
  • 🌅 增加 real-ip 插件 #4813
  • 🌅 limit-* 系列插件允许自定义请求拒绝信息 #4808
  • 🌅 request-id 插件增加 snowflake 算法支持 #4559
  • 🌅 增加 authz-casbin 插件 #4710
  • 🌅 error-log-logger 插件增加 skywalking 后端 #4633
  • 🌅 ext-plugin 插件在发送配置时会额外发送一个 idempotent key #4736

Bugfix

  • 避免特定条件下缓存过期的全局规则 #4867
  • grpc-transcode 插件支持嵌套信息 #4859
  • authz-keycloak 插件避免当 lazy_load_path 为 false 且没有配置 permissions 时出错 #4845
  • proxy-cache 插件保持 cache_method 配置和 nginx's proxy_cache_methods 一致 #4814
  • Admin API 确保 PATCH with sub path 时也能注入 updatetime #4765
  • Admin API 更新 consumer 时校验 username #4756
  • error-log-logger 插件避免发送过期的错误日志 #4690
  • grpc-transcode 插件支持 enum 类型 #4706
  • 当非 HEAD/GET 请求触发 500 错误时,会被错误转成 405 #4696

2.8.0

Change

  • 如果启用 stream proxy默认将不再一并启用 HTTP proxy 功能 #4580

Core

  • 🌅 允许用户自定义 balancer #4605
  • 🌅 upstream 中添加 retry_timeout类似于 Nginx 的 proxy_next_upstream_timeout #4574
  • 🌅 允许在 balancer_by_lua 中运行插件 #4549
  • 🌅 允许给 upstream 指定单独的连接池 #4506
  • 🌅 etcd 连接开启健康检查 #4191

Plugin

  • 🌅 增加 gzip 插件 #4640
  • 🌅 增加 ua-restriction 插件来拒绝爬虫请求 #4587
  • 🌅 stream 模块增加 ip-restriction 插件 #4602
  • 🌅 stream 模块增加 limit-conn 插件 #4515
  • 🌅 将 ext-plugin 的超时提升到 60s #4557
  • 🌅 key-auth 支持从 query string 中获取 key #4490
  • 🌅 kafka-logger 支持通过 admin API 设置日志格式 #4483

Bugfix

  • 修复 stream proxy 的 SNI router 在 session 复用中不可用的问题 #4607
  • 修复 limit-conn 同时在全局和 route 中指定会出错的问题 #4585
  • 修复 Admin API 中检查 proto 引用关系的错误 #4575
  • 修复 skywalking 同时在全局和 route 中指定会出错的问题 #4589
  • 调用 ctx.var.cookie_* 时如果没有找到 cookie 不再报错 #4564
  • 修复 request-id 同时在全局和 route 中指定会出错的问题 #4479

2.7.0

Change

  • 修改 metadata_schema 校验方式,让它跟其他 schema 一致 #4381
  • 移除 echo 插件的 auth_value 字段 #4055
  • 更正 Admin API count 字段的计算,并把它的类型变成 integer #4385

Core

  • 🌅 TCP 代理支持客户端证书校验 #4445
  • 🌅 TCP 代理支持接收 TLS over TCP 连接 #4409
  • 🌅 TCP/UDP 代理上游配置支持用域名 #4386
  • 🌅 CLI 中封装 nginx quit 操作 #4360
  • 🌅 允许在 route 配置上游超时时间 #4340
  • 🌅 Nacos 服务发现支持 group 参数 #4325
  • 🌅 Nacos 服务发现支持 namespace 参数 #4313

Plugin

  • 🌅 client-control 允许动态设置 client_max_body_size #4423
  • 🌅 ext-plugin 使用 SIGTERM 结束 runner #4367
  • 🌅 limit-req 增加 nodelay 参数 #4395
  • 🌅 mqtt-proxy 允许配置域名 #4391
  • 🌅 redirect 支持带上 query string #4298

Bugfix

  • 修复客户端断开连接导致的内存泄漏 #4405
  • 修复处理 etcd 响应时有一个地方没有检查 res.body.error 的问题 #4371
  • 修复 ext-plugin 插件 token 过期后没有刷新 token 的问题 #4345
  • 修复 ext-plugin 插件没有传递环境变量的问题 #4349
  • 修复插件热加载时,插件可能不会重新加载的问题 #4319

2.6.0

Change

  • 更改 prometheus 里面关于 latency 的指标的 label #3993
  • 修改 prometheus 默认端口,不再暴露到数据面的端口上 #3994
  • limit-count 里面如果使用 redis cluster需要指定名称 #3910
  • 不再支持 OpenResty 1.15 #3960

Core

  • 🌅 允许 pass_host 为 node 时upstream 配置多个节点 #4208
  • 🌅 自定义 500 错误页 #4164
  • 🌅 stream_route 中支持 upstream_id #4121
  • 🌅 支持客户端证书认证 #4034
  • 🌅 实验性支持 nacos 服务发现 #3820
  • 🌅 给 tcp.sock.connect 打补丁,采用配置的 DNS resolver #4114

Plugin

  • 🌅 redirect 插件,支持编码 uri #4244
  • 🌅 key-auth 插件:支持自定义鉴权头 #4013
  • 🌅 response-rewrite 插件:允许在 header 里面使用变量 #4194
  • 🌅 实现 ext-plugin 第一版APISIX 现在支持使用其他语言编写自定义插件 #4183

Bugfix

  • 支持 IPv6 DNS resolver #4242
  • 修复被动健康检查可能重复报告的问题 #4116
  • 修复 traffic-split 中偶发的规则紊乱 #4092
  • 修复带域名的 upstream 配置的访问问题 #4061
  • 修复 2.5 版本的 APISIX 无法识别之前版本的 route 配置的问题 #4056
  • standalone 模式下,启动程序时应该可以读取配置 #4027
  • limit-count 插件 redis 模式下原子化计数操作 #3991

2.5.0

Change

  • 更改 zipkin 插件的 span 类型 #3877

Core

  • 🌅 支持 etcd 客户端证书校验 #3905
  • 🌅 支持表达式使用“或”和“非”的逻辑 #3809
  • 🌅 默认启动时会同步 etcd 配置 #3799
  • 🌅 负载均衡支持节点优先级 #3755
  • 🌅 服务发现提供了一系列 control API #3742

Plugin

  • 🌅 允许热更新 skywalking 插件配置,并允许配置上报间隔 #3925
  • 🌅 consumer-restriction 支持 HTTP method 级别的白名单配置 #3691
  • 🌅 cors 插件支持通过正则表达式匹配 Origin #3839
  • 🌅 response-rewrite 插件支持条件改写 #3577

Bugfix

  • error-log-logger 插件需要在每个进程中上报日志 #3912
  • 当使用 snippet 引入 Nginx server 段配置时,确保内置 server 是默认 server #3907
  • 修复 traffic-split 插件通过 upstream_id 绑定上游的问题 #3842
  • 修复 ssl_trusted_certificate 配置项的校验 #3832
  • 启用 proxy-cache 时,避免覆盖到其他路由缓存相关的响应头 #3789
  • 解决 macOS 下无法 make deps 的问题 #3718

2.4.0

Change

  • 插件暴露的公共 API 将默认不再执行全局插件 #3396
  • DNS 记录缓存时间默认按 TTL 设置 #3530

Core

  • 🌅 支持 DNS SRV 记录 #3686
  • 🌅 新的 DNS 服务发现模块 #3629
  • 🌅 支持 Consul HTTP 接口服务发现模块 #3615
  • 🌅 支持插件复用 #3567
  • 🌅 支持 plaintext HTTP2 #3547
  • 🌅 支持 DNS AAAA 记录 #3484

Plugin

  • 🌅 traffic-split 插件支持 upstream_id #3512
  • 🌅 zipkin 插件 b3 请求头 #3551

Bugfix

  • 一致性 hash 负载均衡确保重试所有节点 #3651
  • 当 route 绑定 service 后仍能执行 script #3678
  • 应当依赖 openssl111 #3603
  • zipkin 避免缓存请求特定的数据 #3522

更多的变动可以参考里程碑

2.3.0

Change

  • 默认使用 LuaJIT 运行命令行 #3335
  • 命令行采用 luasocket 而不是 curl 访问 etcd #2965

Core

  • 🌅 命令行中访问 etcd 可以禁用 HTTPS 检验 #3415
  • 🌅 添加 etcd 无法连接时的 Chaos 测试 #3404
  • 🌅 ewma 负载均衡算法更新 #3300
  • 🌅 允许在 Upstream 中配置 HTTPS scheme 来跟 HTTPS 后端通信 #3430
  • 🌅 允许自定义 lua_package_path & lua_package_cpath #3417
  • 🌅 HTTPS 代理时传递 SNI #3420
  • 🌅 支持 gRPCS #3411
  • 🌅 支持通过 control API 获得健康检查状态 #3345
  • 🌅 支持代理 HTTP 到 dubbo 后端 #3224
  • 🌅 支持最少连接负载均衡算法 #3304

Plugin

  • 🌅 kafka-logger 支持复用 kafka 生产者对象 #3429
  • 🌅 authz-keycloak 支持动态 scope & resource 映射 #3308
  • 🌅 proxy-rewrite 支持在域名中带端口 #3428
  • 🌅 fault-injection 支持通过变量条件动态做错误注入 #3363

Bugfix

  • 修复 standalone 下 consumer 的 id 跟 username 可以不一致的问题 #3394
  • gRPC 中可以用 upstream_id & consumer #3387
  • 修复没有匹配规则时命中 global rule 报错的问题 #3332
  • 避免缓存过期的服务发现得到的节点 #3295
  • 应该在 access 阶段创建 health checker #3240
  • 修复 chash 负载均衡算法时重试的问题 #2676

更多的变动可以参考里程碑

2.2.0

Change

  • 默认不启用 node-status 插件 #2968
  • upstreeam 配置中不再允许使用 k8s_deployment_info #3098
  • 默认不再匹配路由中以 ':' 开头的参数变量 #3154

Core

  • 🌅 允许一个 consumer 关联多个认证插件 #2898
  • 🌅 增加 etcd 重试间隔,并允许配置 #2977
  • 🌅 允许启用或禁用 route #2943
  • 🌅 允许通过 graphql 属性进行路由 #2964
  • 🌅 共享 etcd 鉴权 token #2932
  • 🌅 新增 control API #3048

Plugin

  • 🌅 limt-count 中使用 'remote_addr' 作为默认 key #2927
  • 🌅 支持在 fault-injection 的 abort.body 中使用变量 #2986
  • 🌅 新增插件 server-info #2926
  • 🌅 增加 batch process 指标 #3070
  • 🌅 新增 traffic-split 插件 #2935
  • 🌅 proxy-rewrite 支持在 header 中使用变量 #3144
  • 🌅 openid-connect 插件增加更多配置项 #2903
  • 🌅 proxy-rewrite 支持在 upstream_uri 中使用变量 #3139

Bugfix

  • basic-auth 应该在 rewrite phase 执行 #2905
  • http/udp-logger 中插件配置运行时变更没有生效 #2901
  • 修复 limit-conn 对象没有被正确释放的问题 #2465
  • 修复自动生成的 id 可能重复的问题 #3003
  • 修复 OpenResty 1.19 下 ctx 互相影响的问题。对于使用 OpenResty 1.19 的用户,请尽快升级到该版本。 #3105
  • 修复 route.vars 字段的校验 #3124

更多的变动可以参考里程碑

2.1.0

Core

  • 🌅 支持使用环境变量来配置参数。 #2743
  • 🌅 支持使用 TLS 来连接 etcd. #2548
  • 自动生成对象的创建和更新时间。#2740
  • 在上游中开启 websocket 时,增加日志来提示此功能即将废弃。#2691
  • 增加日志来提示 consumer id 即将废弃。#2829
  • 增加 X-APISIX-Upstream-Status 头来区分 5xx 错误来自上游还是 APISIX 自身。#2817
  • 支持 Nginx 配置片段。#2803

Plugin

  • 🌅 升级协议来 Apache Skywalking 8.0#2389. 这个版本只支持 skywalking 8.0 协议。此插件默认关闭,需要修改 config.yaml 来开启。这是不向下兼容的修改。
  • 🌅 新增阿里云 sls 日志服务插件。#2169
  • proxy-cache: cache_zone 字段改为可选。#2776
  • 在数据平面校验插件的配置。#2856

Bugfix

  • 🐛 fix(etcd): 处理 etcd compaction.#2687
  • conf/cert 中的测试证书移动到 t/certs 目录中,并且默认关闭 SSL。这是不向下兼容的修改。 #2112
  • 检查 decrypt key 来阻止 lua thread 中断。 #2815

不向下兼容特性预告

  • 在 2.3 发布版本中consumer 将只支持用户名,废弃 idconsumer 需要在 etcd 中手工清理掉 id 字段,不然使用时 schema 校验会报错
  • 在 2.3 发布版本中,将不再支持在 upstream 上开启 websocket
  • 在 3.0 版本中,数据平面和控制平面将分开为两个独立的端口,即现在的 9080 端口将只处理数据平面的请求,不再处理 admin API 的请求

更多的变动可以参考里程碑

2.0.0

这是一个 release candidate。

Core

  • 🌅 从 etcd v2 协议迁移到 v3这是不向下兼容的修改。Apache APISIX 只支持 etcd 3.4 以及后续的版本。 #2036
  • 支持为上游对象增加标签。#2279
  • 为上游、路由等资源增加更多字段,比如 create_time 和 update_time。#2444
  • 使用拦截器来保护插件的路由。#2416
  • 支持 http 和 https 监听多个端口。#2409
  • 实现 core.sleep 函数。#2397

Plugin

  • 🌅 增加 AK/SK(HMAC) 认证插件。#2192
  • 🌅 增加 referer-restriction 插件。#2352
  • limit-count 插件支持 redis cluster。#2406
  • proxy-cache 插件支持存储临时文件。#2317
  • http-logger 插件支持通过 admin API 来指定文件格式。#2309

Bugfix

  • 🐛 高优先级 当数据平面接收到删除某一个资源 (路由、上游等) 的指令时,没有正确的清理缓存,导致存在的资源也会找不到。这个问题在长时间、频繁删除操作的情况下才会出现。#2168
  • 修复路由优先级不生效的问题。#2447
  • init_worker 阶段设置随机数,而不是 init 阶段。#2357
  • 删除 jwt 插件中不支持的算法。#2356
  • 当重定向插件的 http_to_https 开启时,返回正确的响应码。#2311

更多的变动可以参考里程碑

CVE

  • 修复 Admin API 默认访问令牌漏洞

1.5.0

Core

  • Admin API支持使用 SSL 证书进行身份验证。1747
  • Admin API同时支持标准的 PATCH 和子路径 PATCH。1930
  • HealthCheck支持自定义检查端口。1914
  • Upstream支持禁用 Nginx 默认重试机制。1919
  • URI支持以配置方式删除 URI 末尾的 / 符号。1766

New Plugin

  • 🌅 新增 请求验证器 插件 1709

Improvements

  • 变更nginx worker_shutdown_timeout 配置默认值由 3s 变更为推荐值 240s1883
  • 变更:healthcheck 超时时间类型 由 integer 变更为 number1892
  • 变更:request-validation 插件输入参数支持 JsonSchema 验证。1920
  • 变更:为 Makefile install 命令添加注释。1912
  • 变更:更新 config.yaml etcd.timeout 默认配置的注释。1929
  • 变更:为 prometheus 添加更多度量指标,以更好地了解 APISIX 节点的情况。1888
  • 变更:为 cors 插件添加更多配置选项。1963

Bugfix

  • 修复:healthcheck 获取 host 配置失败。 1871
  • 修复:插件运行时数据保存到 etcd1910
  • 修复:多次运行 apisix start 将启动多个 Nginx 进程。1913
  • 修复:从临时文件读取请求正文(如果已缓存)。1863
  • 修复:批处理器名称和错误返回类型。1927
  • 修复:limit-count 插件 redis.ttl 读取异常。1928
  • 修复:被动健康检查不能提供健康报告。1918
  • 修复:避免插件中直接修改或使用原始配置数据。1958
  • 修复:invalid-upstream 测试用例稳定性问题。1925

Doc

  • 文档:添加 APISIX Lua 代码风格指南。1874
  • 文档:修正 README 中语法错误。1894
  • 文档:修正 benchmark 文档中图片链接错误。1896
  • 文档:修正 FAQadmin-apiarchitecture-designdiscoveryprometheusproxy-rewriteredirecthttp-logger 文档中错别字。1916
  • 文档:更新 request-validation 插件示例。1926
  • 文档:修正 architecture-design 文档中错别字。1938
  • 文档:添加 how-to-build 文档中在 LinuxmacOS 系统中单元测试 Nginx 的默认引入路径。1936
  • 文档:添加 request-validation 插件中文文档。1932
  • 文档:修正 READMEgRPC transcoding 文档路径。1945
  • 文档:修正 READMEuri-blocker 文档路径。1950
  • 文档:修正 READMEgrpc-transcode 文档路径。1946
  • 文档:删除 k8s 文档中不必要的配置。1891

1.4.1

Bugfix

  • 修复在配置了多个 SSL 证书的情况下,只有一个证书生效的问题。 1818

1.4.0

Core

  • Admin API: 路由支持唯一 name 字段 1655
  • 优化 log 缓冲区大小和刷新时间 1570

New plugins

  • 🌅 Apache Skywalking plugin 1241
  • 🌅 Keycloak Identity Server Plugin 1701
  • 🌅 Echo Plugin 1632
  • 🌅 Consume Restriction Plugin 1437

Improvements

  • Batch Request : 对每个请求拷贝头 1697
  • SSL 私钥加密 1678
  • 众多插件文档改善

1.3.0

1.3 版本主要带来安全更新。

Security

  • 拒绝无效的 header #1462 并对 uri 进行安全编码 #1461
  • 默认只允许本地环回地址 127.0.0.1 访问 admin API 和 dashboard. #1458

Plugin

  • 🌅 新增 batch request 插件. #1388
  • 实现完成 sys logger 插件。#1414

1.2.0

1.2 版本在内核以及插件上带来了非常多的更新。

Core

  • 🌅 支持 etcd 集群. #1283
  • 默认使用本地 DNS resolver这对于 k8s 环境更加友好。#1387
  • 支持在 header_filterbody_filterlog 阶段运行全局插件。#1364
  • 将目录 lua/apisix 修改为 apisix(不向下兼容). #1351
  • 增加 dashboard 子模块。#1360
  • 允许自定义共享字典。#1367

Plugin

  • 🌅 新增 Apache Kafka 插件. #1312
  • 🌅 新增 CORS 插件. #1327
  • 🌅 新增 TCP logger 插件. #1221
  • 🌅 新增 UDP logger 插件. 1070
  • 🌅 新增 proxy mirror 插件. #1288
  • 🌅 新增 proxy cache 插件. #1153
  • 在 proxy-rewrite 插件中废弃 websocket 开关 (不向下兼容). 1332
  • OAuth 插件中增加基于公钥的自省支持。#1266
  • response-rewrite 插件通过 base64 来支持传输二进制数据。#1381
  • gRPC 转码插件支持 deadline. #1149
  • limit count 插件支持 redis 权限认证。#1150
  • Zipkin 插件支持名字和本地服务器 ip 的记录。#1386
  • Wolf-Rbac 插件增加 change_pwduser_info 参数。#1204

Admin API

  • 🌅 对调用 Admin API 增加 key-auth 权限认证 (not backward compatible). #1169
  • 隐藏 SSL 私钥的返回值。#1240

Bugfix

  • 在复用 table 之前遗漏了对数据的清理 (会引发内存泄漏). #1134
  • 如果 yaml 中路由非法就打印警告信息。#1141
  • 使用空字符串替代空的 balancer IP. #1166
  • 修改 node-status 和 heartbeat 插件没有 schema 的问题。#1249
  • basic-auth 增加 required 字段。#1251
  • 检查上游合法节点的个数。#1292

1.1.0

这个版本主要是加强代码的稳定性,以及增加更多的文档。

Core

  • 每次跑测试用例都指定 perl 包含路径。 #1097
  • 增加对代理协议的支持。 #1113
  • 增加用于校验 nginx.conf 的命令。 #1112
  • 支持「nginx 最多可以打开文件数」可配置,并增大其默认配置。#1105 #1098
  • 优化日志模块。 #1093
  • 支持 SO_REUSEPORT 。 #1085

Doc

  • 增加 Grafana 元数据下载链接。#1119
  • 更新 README.md。 #1118
  • 增加 wolf-rbac 插件说明文档 #1116
  • 更新 rpm 下载链接。 #1108
  • 增加更多英文文章链接。 #1092
  • 增加文档贡献指引。 #1086
  • 检查更新「快速上手」文档。 #1084
  • 检查更新「插件开发指南」。 #1078
  • 更新 admin-api-cn.md 。 #1067
  • 更新 architecture-design-cn.md 。 #1065

CI

  • 移除不再必须的补丁。 #1090
  • 修复使用 luarocks 安装时路径错误问题。#1068
  • 为 luarocks 安装专门配置一个 travis 进行回归测试。 #1063

Plugins

  • 在「节点状态」插件使用 nginx 内部请求替换原来的外部请求。 #1109
  • 增加 wolf-rbac 插件。 #1095
  • 增加 udp-logger 插件。 #1070

1.0.0

这个版本主要是加强代码的稳定性,以及增加更多的文档。

Core

  • 🌅 支持路由的优先级。可以在 URI 相同的条件下,根据 header、args、优先级等条件来匹配到不同的上游服务。 #998
  • 在没有匹配到任何路由的时候,返回错误信息。以便和其他的 404 请求区分开。#1013
  • dashboard 的地址 /apisix/admin 支持 CORS。#982
  • jsonschema 校验器返回更清晰的错误提示。#1011
  • 升级 ngx_var 模块到 0.5 版本。#1005
  • 升级 lua-resty-etcd 模块到 0.8 版本。#980
  • 在开发模式下,自动把 worker 数调整为 1。#926
  • 从代码仓库中移除 nginx.conf 文件,它每次都会自动生成,不可手工修改。#974

Doc

  • 增加如何自定义开发插件的文档。#909
  • 修复 serverless 插件文档中错误的示例。#1006
  • 增加 Oauth 插件的使用文档。#987
  • 增加 dashboard 编译的文档。#985
  • 增加如何进行 a/b 测试的文档。#957
  • 增加如何开启 MQTT 插件的文档。#916

Test case

  • 增加 key-auth 插件正常情况下的测试案例。#964
  • 增加 grpc transcode pb 选项的测试。#920

0.9.0

这个版本带来很多新特性,比如支持使用 Tengine 运行 APISIX增加了对开发人员更友好的高级调试模式还有新的 URI 重定向插件等。

Core

  • 🌅 支持使用 Tengine 运行 APISIX。 #683
  • 🌅 启用 HTTP2 并支持设置 ssl_protocols。 #663
  • 🌅 增加高级调试模式,可在不重启的服务的情况下动态打印指定模块方法的请求参数或返回值。#614
  • 安装程序增加了仪表盘开关,支持用户自主选择是否安装仪表板程序。 #686
  • 取消对 R3 路由的支持,并移除 R3 路由模块。 #725

Plugins

lua-resty-*

  • lua-resty-radixtree
    • 支持将host + uri作为索引。
  • lua-resty-jsonschema
    • 该扩展作用是 JSON 数据验证器,用于替换现有的 lua-rapidjson 扩展。

Bugfix

  • 在多个使用者的情况下,key-auth 插件无法正确运行。 #826
  • 无法在 API Server 中获取 serverless插件配置。 #787
  • 解决使用 proxy-write 重写 URI 时 GET 参数丢失问题。 #642
  • Zipkin 插件未将跟踪数据设置为请求头。#715
  • 使用本地文件作为配置中心时,跳过 etcd 初始化。 #737
  • 在 APISIX CLI 中跳过 luajit 环境的check cjson#652
  • 配置 Upstream 时,选择 balancer 类型为 chash 时,支持更多 Nginx 内置变量作为计算 key。 #775

Dependencies

  • 使用 lua-resty-jsonschema 全局替换 lua-rapidjson 扩展,lua-resty-jsonschema 解析速度更快,更容易编译。

0.8.0

Released on 2019/09/30

这个版本带来很多新的特性,比如四层协议的代理,支持 MQTT 协议代理,以及对 ARM 平台的支持,和代理改写插件等。

Core

Plugins

  • 🌅 MQTT 代理: 支持用 client_id 对 MQTT 进行负载均衡,同时支持 MQTT 3.1 和 5.0 两个协议标准。 #513
  • proxy-rewrite: 对代理到上游的请求进行改写,包括 host, uri 和 schema。 #594

ARM

  • 🌅 APISIX 可以在基于 ARM64 架构的 Ubuntu 18.04 系统中正常运行, 搭配上 MQTT 插件,你可以把它当做 IoT 网关来使用。

lua-resty-*

  • lua-resty-ipmatcher
    • 支持 IPv6。
    • 支持 IP 黑白名单和路由。
  • lua-resty-radixtree
    • 允许指定多个 host, remote_addr 和 uri。
    • 允许设置用户自定义函数来做额外的过滤。
    • 使用 lua-resty-ipmatcher 替代 lua-resty-iputils, lua-resty-ipmatcher 支持 IPv6 并且速度更快。

Bugfix

  • 健康检查:修复在多 worker 下运行时健康检查 checker 的名字错误。 #568

Dependencies

  • lua-tinyyaml 从源码中移除,通过 Luarocks 来安装。

0.7.0

Released on 2019/09/06

这个版本带来很多新的特性,比如 IP 黑白名单、gPRC 协议转换、支持 IPv6、对接 IdP身份认证提供商服务、serverless、默认路由修改为 radix tree不向下兼容)等。

Core

  • 🌅 gRPC 协议转换: 支持 gRPC 协议的转换,这样客户端可以通过 HTTP/JSON 来访问你的 gRPC API. #395
  • 🌅 radix tree 路由: 默认的路由器更改为 radix tree支持把 uri、host、cookie、请求头、请求参数、Nginx 内置变量等作为路由的条件,并支持等于、大于、小于等常见操作符,更加强大和灵活。需要注意的是,这个改动不向下兼容,所有使用历史版本的用户,需要手动修改路由才能正常使用#414
  • 动态上游支持更多的参数,可以指定上游的 uri 和 host以及是否开启 websocket. #451
  • 支持从 ctx.var 中直接获取 cookie 中的值。#449
  • 路由支持 IPv6. #331

Plugins

  • 🌅 serverless: 支持 serverless用户可以把任意 Lua 函数动态的在网关节点上运行。用户也可以把这个功能当做是轻量级的插件来使用。#86
  • 🌅 IdP 支持: 支持外部的身份认证服务,比如 Auth0okta 等,用户可以借此来对接 Oauth2.0 等认证方式。 #447
  • 限流限速支持更多的限制 key比如 X-Forwarded-For 和 X-Real-IP并且允许用户把 Nginx 变量、请求头和请求参数作为 key. #228
  • IP 黑白名单 支持 IP 黑白名单,提供更高的安全性。#398

CLI

  • 增加 version 指令,获取 APISIX 的版本号。#420

Admin

  • 支持 PATCH API可以针对某个配置单独修改而不再用提交整段配置。#365

Dashboard

Back to TOC

0.6.0

Released on 2019/08/05

这个版本带来很多新的特性比如健康检查、服务熔断、debug 模式分布式追踪、JWT 认证等,以及内置的 dashboard.

Core

  • 🌅 健康检查和服务熔断: 对上游节点开启健康检查,智能判断服务状态进行熔断和连接。#249
  • 阻止 ReDoS(Regular expression Denial of Service). #252
  • 支持 debug 模式。#319
  • 允许自定义路由。#364
  • 路由支持 host 和 uri 的组合。#325
  • 允许在 balance 阶段注入插件。#299
  • 为 upstream 和 service 在 schema 中增加描述信息。#289

Plugins

CLI

  • allow 指令中支持多个 ip 地址。#340
  • 支持在 nginx.conf 中配置 real_ip 指令,以及增加函数来获取 ip. #236

Dashboard

  • 🌅 增加内置的 dashboard. #327

Test

  • 在 Travis CI 中支持 OSX. #217
  • 把所有依赖安装到 deps 目录。#248

Back to TOC