diff --git a/.asf.yaml b/.asf.yaml index b7af3ece12e9..266232566505 100644 --- a/.asf.yaml +++ b/.asf.yaml @@ -47,6 +47,10 @@ github: required_pull_request_reviews: require_code_owner_reviews: true required_approving_review_count: 2 + release/2.10.0: + required_pull_request_reviews: + require_code_owner_reviews: true + required_approving_review_count: 2 release/2.9: required_pull_request_reviews: require_code_owner_reviews: true diff --git a/.gitignore b/.gitignore index 6a8c7dcd0779..d5a7d937edff 100644 --- a/.gitignore +++ b/.gitignore @@ -42,6 +42,8 @@ luac.out # develop *.log *.pid +*.orig +*.rej t/servroot conf/apisix.uid conf/nginx.conf diff --git a/CHANGELOG.md b/CHANGELOG.md index 2b7e4db8f890..3cb40fc80f29 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -23,6 +23,7 @@ title: Changelog ## Table of Contents +- [2.10.0](#2100) - [2.9.0](#290) - [2.8.0](#280) - [2.7.0](#270) @@ -45,6 +46,45 @@ title: Changelog - [0.7.0](#070) - [0.6.0](#060) +## 2.10.0 + +### Change + +- change(debug): move 'enable_debug' form config.yaml to debug.yaml [#5046](https://github.com/apache/apisix/pull/5046) +- change: use a new name to customize lua_shared_dict in nginx.conf [#5030](https://github.com/apache/apisix/pull/5030) +- change: drop the support of shell script installation [#4985](https://github.com/apache/apisix/pull/4985) + +### Core + +- :sunrise: feat(debug-mode): add dynamic debug mode [#5012](https://github.com/apache/apisix/pull/5012) +- :sunrise: feat: allow injecting logic to APISIX's method [#5068](https://github.com/apache/apisix/pull/5068) +- :sunrise: feat: allow configuring fallback SNI [#5000](https://github.com/apache/apisix/pull/5000) +- :sunrise: feat(stream_route): support CIDR in ip match [#4980](https://github.com/apache/apisix/pull/4980) +- :sunrise: feat: allow route to inherit hosts from service [#4977](https://github.com/apache/apisix/pull/4977) +- :sunrise: feat: support configurating the node listening address[#4856](https://github.com/apache/apisix/pull/4856) + +### Plugin + +- :sunrise: feat(hmac-auth): Add validate request body for hmac auth plugin [#5038](https://github.com/apache/apisix/pull/5038) +- :sunrise: feat(proxy-mirror): support mirror requests sample_ratio [#4965](https://github.com/apache/apisix/pull/4965) +- :sunrise: feat(referer-restriction): add blacklist and message [#4916](https://github.com/apache/apisix/pull/4916) +- :sunrise: feat(kafka-logger): add cluster name support [#4876](https://github.com/apache/apisix/pull/4876) +- :sunrise: feat(kafka-logger): add required_acks option [#4878](https://github.com/apache/apisix/pull/4878) +- :sunrise: feat(uri-blocker): add case insensitive switch [#4868](https://github.com/apache/apisix/pull/4868) + +### Bugfix + +- fix(radixtree_host_uri): correct matched host [#5124](https://github.com/apache/apisix/pull/5124) +- fix(radixtree_host_uri): correct matched path [#5104](https://github.com/apache/apisix/pull/5104) +- fix(nacos): distinguish services that has same name but in different groups or namespaces [#5083](https://github.com/apache/apisix/pull/5083) +- fix(nacos): continue to process other services when request failed [#5112](https://github.com/apache/apisix/pull/5112) +- fix(ssl): match sni in case-insensitive way [#5074](https://github.com/apache/apisix/pull/5074) +- fix(upstream): should not override default keepalive value [#5054](https://github.com/apache/apisix/pull/5054) +- fix(DNS): prefer SRV in service discovery [#4992](https://github.com/apache/apisix/pull/4992) +- fix(consul): retry connecting after a delay [#4979](https://github.com/apache/apisix/pull/4979) +- fix: avoid copying unwanted data when the domain's IP changed [#4952](https://github.com/apache/apisix/pull/4952) +- fix(plugin_config): recover plugin when plugin_config changed [#4888](https://github.com/apache/apisix/pull/4888) + ## 2.9.0 ### Change diff --git a/apisix/core/version.lua b/apisix/core/version.lua index b4484750c14f..6217100859a7 100644 --- a/apisix/core/version.lua +++ b/apisix/core/version.lua @@ -15,5 +15,5 @@ -- limitations under the License. -- return { - VERSION = "2.9" + VERSION = "2.10.0" } diff --git a/docs/en/latest/config.json b/docs/en/latest/config.json index d609c35edf54..33cf914ff83f 100644 --- a/docs/en/latest/config.json +++ b/docs/en/latest/config.json @@ -1,5 +1,5 @@ { - "version": 2.9, + "version": "2.10.0", "sidebar": [ { "type": "category", diff --git a/docs/en/latest/how-to-build.md b/docs/en/latest/how-to-build.md index 95f9575aac49..3598e64385a0 100644 --- a/docs/en/latest/how-to-build.md +++ b/docs/en/latest/how-to-build.md @@ -36,7 +36,7 @@ You can install Apache APISIX via RPM package, Docker, Helm Chart, and source re This installation method is suitable for CentOS 7, please run the following command to install Apache APISIX. ```shell -sudo yum install -y https://github.com/apache/apisix/releases/download/2.9/apisix-2.9-0.el7.x86_64.rpm +sudo yum install -y https://github.com/apache/apisix/releases/download/2.10.0/apisix-2.10.0-0.el7.x86_64.rpm ``` ### Installation via Docker @@ -49,16 +49,16 @@ Please refer to: [Installing Apache APISIX with Helm Chart](https://github.com/a ### Installation via Source Release Package -1. Create a directory named `apisix-2.9`. +1. Create a directory named `apisix-2.10.0`. ```shell - mkdir apisix-2.9 + mkdir apisix-2.10.0 ``` 2. Download Apache APISIX Release source package. ```shell - wget https://downloads.apache.org/apisix/2.9/apache-apisix-2.9-src.tgz + wget https://downloads.apache.org/apisix/2.10.0/apache-apisix-2.10.0-src.tgz ``` You can also download the Apache APISIX Release source package from the Apache APISIX website. The [Apache APISIX Official Website - Download Page](https://apisix.apache.org/downloads/) also provides source packages for Apache APISIX, APISIX Dashboard and APISIX Ingress Controller. @@ -66,14 +66,14 @@ Please refer to: [Installing Apache APISIX with Helm Chart](https://github.com/a 3. Unzip the Apache APISIX Release source package. ```shell - tar zxvf apache-apisix-2.9-src.tgz -C apisix-2.9 + tar zxvf apache-apisix-2.10.0-src.tgz -C apisix-2.10.0 ``` 4. Install the runtime dependent Lua libraries. ```shell - # Switch to the apisix-2.9 directory - cd apisix-2.9 + # Switch to the apisix-2.10.0 directory + cd apisix-2.10.0 # Create dependencies make deps ``` diff --git a/docs/zh/latest/CHANGELOG.md b/docs/zh/latest/CHANGELOG.md index 34b111f85d91..8546b34f41ec 100644 --- a/docs/zh/latest/CHANGELOG.md +++ b/docs/zh/latest/CHANGELOG.md @@ -23,6 +23,7 @@ title: CHANGELOG ## Table of Contents +- [2.10.0](#2100) - [2.9.0](#290) - [2.8.0](#280) - [2.7.0](#270) @@ -45,6 +46,45 @@ title: CHANGELOG - [0.7.0](#070) - [0.6.0](#060) +## 2.10.0 + +### Change + +- 将 enable_debug 配置从 config.yaml 移到 debug.yaml [#5046](https://github.com/apache/apisix/pull/5046) +- 更改自定义 lua_shared_dict 配置的名称 [#5030](https://github.com/apache/apisix/pull/5030) +- 不再提供 APISIX 安装 shell 脚本 [#4985](https://github.com/apache/apisix/pull/4985) + +### Core + +- :sunrise: debug-mode 支持动态请求过滤 [#5012](https://github.com/apache/apisix/pull/5012) +- :sunrise: 支持注入逻辑到 APISIX 方法中 [#5068](https://github.com/apache/apisix/pull/5068) +- :sunrise: 支持配置 fallback SNI [#5000](https://github.com/apache/apisix/pull/5000) +- :sunrise: stream_route 支持在 IP 匹配中使用 CIDR [#4980](https://github.com/apache/apisix/pull/4980) +- :sunrise: 支持 route 从 service 中继承 hosts [#4977](https://github.com/apache/apisix/pull/4977) +- :sunrise: 改善数据面监听地址的配置 [#4856](https://github.com/apache/apisix/pull/4856) + +### Plugin + +- :sunrise: hmac-auth 支持校验请求体 [#5038](https://github.com/apache/apisix/pull/5038) +- :sunrise: proxy-mirror 支持控制镜像流量的比例 [#4965](https://github.com/apache/apisix/pull/4965) +- :sunrise: referer-restriction 增加黑名单和自定义信息 [#4916](https://github.com/apache/apisix/pull/4916) +- :sunrise: kafka-logger 增加 cluster 支持 [#4876](https://github.com/apache/apisix/pull/4876) +- :sunrise: kafka-logger 增加 required_acks 选项 [#4878](https://github.com/apache/apisix/pull/4878) +- :sunrise: uri-blocker 支持大小写无关的匹配 [#4868](https://github.com/apache/apisix/pull/4868) + +### Bugfix + +- radixtree_host_uri 路由更正匹配结果的 host [#5124](https://github.com/apache/apisix/pull/5124) +- radixtree_host_uri 路由更正匹配结果的 path [#5104](https://github.com/apache/apisix/pull/5104) +- Nacos 服务发现,区分处于不同 group/namespace 的同名 service [#5083](https://github.com/apache/apisix/pull/5083) +- Nacos 服务发现,当一个服务的地址获取失败后,继续处理剩下的服务 [#5112](https://github.com/apache/apisix/pull/5112) +- 匹配 SNI 时需要大小写无关 [#5074](https://github.com/apache/apisix/pull/5074) +- upstream 的 keepalive_pool 配置,缺省时不应覆盖默认的 keepalive 配置 [#5054](https://github.com/apache/apisix/pull/5054) +- DNS 服务发现,优先查询 SRV 记录 [#4992](https://github.com/apache/apisix/pull/4992) +- Consul 服务发现,重试前需等待一段时间 [#4979](https://github.com/apache/apisix/pull/4979) +- 当 upstream domain 背后的 IP 改变时,避免复制多余数据 [#4952](https://github.com/apache/apisix/pull/4952) +- 当 plugin_config 变化时,恢复之前被覆盖的配置 [#4888](https://github.com/apache/apisix/pull/4888) + ## 2.9.0 ### Change diff --git a/docs/zh/latest/config.json b/docs/zh/latest/config.json index ff06009fc928..7bbb1de72a6e 100644 --- a/docs/zh/latest/config.json +++ b/docs/zh/latest/config.json @@ -1,5 +1,5 @@ { - "version": 2.9, + "version": "2.10.0", "sidebar": [ { "type": "category", diff --git a/docs/zh/latest/how-to-build.md b/docs/zh/latest/how-to-build.md index 0e9afa7effc0..de08de0714fe 100644 --- a/docs/zh/latest/how-to-build.md +++ b/docs/zh/latest/how-to-build.md @@ -36,7 +36,7 @@ Apache APISIX 的运行环境需要依赖 NGINX 和 etcd,所以在安装 Apach 这种安装方式适用于 CentOS 7 操作系统,请运行以下命令安装 Apache APISIX。 ```shell -sudo yum install -y https://github.com/apache/apisix/releases/download/2.9/apisix-2.9-0.el7.x86_64.rpm +sudo yum install -y https://github.com/apache/apisix/releases/download/2.10.0/apisix-2.10.0-0.el7.x86_64.rpm ``` ### 通过 Docker 安装 @@ -49,16 +49,16 @@ sudo yum install -y https://github.com/apache/apisix/releases/download/2.9/apisi ### 通过源码包安装 -1. 创建一个名为 `apisix-2.9` 的目录。 +1. 创建一个名为 `apisix-2.10.0` 的目录。 ```shell - mkdir apisix-2.9 + mkdir apisix-2.10.0 ``` 2. 下载 Apache APISIX Release 源码包: ```shell - wget https://downloads.apache.org/apisix/2.9/apache-apisix-2.9-src.tgz + wget https://downloads.apache.org/apisix/2.10.0/apache-apisix-2.10.0-src.tgz ``` 您也可以通过 Apache APISIX 官网下载 Apache APISIX Release 源码包。 Apache APISIX 官网也提供了 Apache APISIX、APISIX Dashboard 和 APISIX Ingress Controller 的源码包,详情请参考[Apache APISIX 官网-下载页](https://apisix.apache.org/zh/downloads)。 @@ -66,14 +66,14 @@ sudo yum install -y https://github.com/apache/apisix/releases/download/2.9/apisi 3. 解压 Apache APISIX Release 源码包: ```shell - tar zxvf apache-apisix-2.9-src.tgz -C apisix-2.9 + tar zxvf apache-apisix-2.10.0-src.tgz -C apisix-2.10.0 ``` 4. 安装运行时依赖的 Lua 库: ```shell - # 切换到 apisix-2.9 目录 - cd apisix-2.9 + # 切换到 apisix-2.10.0 目录 + cd apisix-2.10.0 # 创建依赖 make deps ``` diff --git a/rockspec/apisix-2.10.0-0.rockspec b/rockspec/apisix-2.10.0-0.rockspec new file mode 100644 index 000000000000..f6adf3b0fb81 --- /dev/null +++ b/rockspec/apisix-2.10.0-0.rockspec @@ -0,0 +1,95 @@ +-- +-- Licensed to the Apache Software Foundation (ASF) under one or more +-- contributor license agreements. See the NOTICE file distributed with +-- this work for additional information regarding copyright ownership. +-- The ASF licenses this file to You under the Apache License, Version 2.0 +-- (the "License"); you may not use this file except in compliance with +-- the License. You may obtain a copy of the License at +-- +-- http://www.apache.org/licenses/LICENSE-2.0 +-- +-- Unless required by applicable law or agreed to in writing, software +-- distributed under the License is distributed on an "AS IS" BASIS, +-- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +-- See the License for the specific language governing permissions and +-- limitations under the License. +-- + +package = "apisix" +version = "2.10.0-0" +supported_platforms = {"linux", "macosx"} + +source = { + url = "git://github.com/apache/apisix", + branch = "2.10.0", +} + +description = { + summary = "Apache APISIX is a cloud-native microservices API gateway, delivering the ultimate performance, security, open source and scalable platform for all your APIs and microservices.", + homepage = "https://github.com/apache/apisix", + license = "Apache License 2.0", +} + +dependencies = { + "lua-resty-ctxdump = 0.1-0", + "lua-resty-dns-client = 5.2.0", + "lua-resty-template = 2.0", + "lua-resty-etcd = 1.5.4", + "api7-lua-resty-http = 0.2.0", + "lua-resty-balancer = 0.02rc5", + "lua-resty-ngxvar = 0.5.2", + "lua-resty-jit-uuid = 0.0.7", + "lua-resty-healthcheck-api7 = 2.2.0", + "lua-resty-jwt = 0.2.0", + "lua-resty-hmac-ffi = 0.05", + "lua-resty-cookie = 0.1.0", + "lua-resty-session = 2.24", + "opentracing-openresty = 0.1", + "lua-resty-radixtree = 2.8.1", + "lua-protobuf = 0.3.3", + "lua-resty-openidc = 1.7.2-1", + "luafilesystem = 1.7.0-2", + "api7-lua-tinyyaml = 0.3.0", + "nginx-lua-prometheus = 0.20210206", + "jsonschema = 0.9.5", + "lua-resty-ipmatcher = 0.6.1", + "lua-resty-kafka = 0.07", + "lua-resty-logger-socket = 2.0-0", + "skywalking-nginx-lua = 0.4-1", + "base64 = 1.5-2", + "binaryheap = 0.4", + "dkjson = 2.5-2", + "resty-redis-cluster = 1.02-4", + "lua-resty-expr = 1.3.1", + "graphql = 0.0.2", + "argparse = 0.7.1-1", + "luasocket = 3.0rc1-2", + "luasec = 0.9-1", + "lua-resty-consul = 0.3-2", + "penlight = 1.9.2-1", + "ext-plugin-proto = 0.3.0", + "casbin = 1.26.0", + "api7-snowflake = 2.0-1", + "inspect == 3.1.1", +} + +build = { + type = "make", + build_variables = { + CFLAGS="$(CFLAGS)", + LIBFLAG="$(LIBFLAG)", + LUA_LIBDIR="$(LUA_LIBDIR)", + LUA_BINDIR="$(LUA_BINDIR)", + LUA_INCDIR="$(LUA_INCDIR)", + LUA="$(LUA)", + OPENSSL_INCDIR="$(OPENSSL_INCDIR)", + OPENSSL_LIBDIR="$(OPENSSL_LIBDIR)", + }, + install_variables = { + INST_PREFIX="$(PREFIX)", + INST_BINDIR="$(BINDIR)", + INST_LIBDIR="$(LIBDIR)", + INST_LUADIR="$(LUADIR)", + INST_CONFDIR="$(CONFDIR)", + }, +}