Skip to content

Commit 33d0bdf

Browse files
authored
blog: add release notes for 3.8.0 (#1758)
1 parent 318afb2 commit 33d0bdf

File tree

2 files changed

+314
-0
lines changed

2 files changed

+314
-0
lines changed
Lines changed: 157 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,157 @@
1+
---
2+
title: "Release Apache APISIX 3.8.0"
3+
authors:
4+
- name: "Xin Rong"
5+
title: "Author"
6+
url: "https://github.com/AlinsRan"
7+
image_url: "https://github.com/AlinsRan.png"
8+
- name: "Traky Deng"
9+
title: "Technical Writer"
10+
url: "https://github.com/kayx23"
11+
image_url: "https://github.com/kayx23.png"
12+
keywords:
13+
- Apache APISIX
14+
- API Gateway
15+
- API Management Platform
16+
- New Release
17+
- Cloud Native
18+
description: The Apache APISIX 3.8.0 version is released on January 15, 2024. This release includes a few new features, bug fixes, and other improvements to user experiences.
19+
tags: [Community]
20+
---
21+
22+
We are glad to present Apache APISIX 3.8.0 with exciting new features, bug fixes, and other improvements to user experiences.
23+
24+
<!--truncate-->
25+
26+
This new release adds a number of new features, including the support for JWE decryption, brotli compression, multiple authentication methods on routes and services, required scopes in `openid-connect` plugin, and more.
27+
28+
## New Features
29+
30+
### Support decrypting JWE in requests using `jwe-decrypt` plugin
31+
32+
Support the decryption of [JWE](https://datatracker.ietf.org/doc/html/rfc7516) authorization headers in requests with the new `jwe-decrypt` plugin.
33+
34+
The plugin creates an internal endpoint `/apisix/plugin/jwe/encrypt` for JWE encryption, which can be exposed using the `public-api` plugin. You will also configure the decryption key in Consumers.
35+
36+
For more information, see [PR #10252](https://github.com/apache/apisix/pull/10252) and [plugin documentation](https://github.com/apache/apisix/blob/master/docs/en/latest/plugins/jwe-decrypt.md).
37+
38+
### Support multiple authentication methods on routes and services
39+
40+
Support multiple authentication methods on routes and services with the new `multi-auth` plugin. The plugin iterates through the list of authentication plugins configured in the `auth_plugins` attribute. It allows consumers using different authentication methods to share the same route or service.
41+
42+
For example, you can have one consumer using basic authentication:
43+
44+
```shell
45+
curl http://127.0.0.1:9180/apisix/admin/consumers -X PUT \
46+
-H "X-API-KEY: ${ADMIN_API_KEY}" \
47+
-d '{
48+
"username": "consumer1",
49+
"plugins": {
50+
"basic-auth": {
51+
"username": "consumer1",
52+
"password": "consumer1_pwd"
53+
}
54+
}
55+
}'
56+
```
57+
58+
And another consumer using key authentication:
59+
60+
```shell
61+
curl http://127.0.0.1:9180/apisix/admin/consumers -X PUT \
62+
-H "X-API-KEY: ${ADMIN_API_KEY}" \
63+
-d '{
64+
"username": "consumer2",
65+
"plugins": {
66+
"key-auth": {
67+
"key": "consumer2_s3cr3t"
68+
}
69+
}
70+
}'
71+
```
72+
73+
Both consumers can access the route below upon successful authentication using their respective authentication method:
74+
75+
```shell
76+
curl http://127.0.0.1:9180/apisix/admin/routes/1 -X PUT \
77+
-H "X-API-KEY: ${ADMIN_API_KEY}" \
78+
-d '{
79+
"methods": ["GET"],
80+
"uri": "/get",
81+
"plugins": {
82+
"multi-auth":{
83+
"auth_plugins":[
84+
{
85+
"basic-auth":{ }
86+
},
87+
{
88+
"key-auth":{
89+
"query":"apikey",
90+
"hide_credentials":true,
91+
"header":"apikey"
92+
}
93+
}
94+
]
95+
}
96+
},
97+
"upstream": {
98+
"type": "roundrobin",
99+
"nodes": {
100+
"httpbin.org": 1
101+
}
102+
}
103+
}'
104+
```
105+
106+
For more information, see [PR #10482](https://github.com/apache/apisix/pull/10482) and [plugin documentation](https://github.com/apache/apisix/blob/master/docs/en/latest/plugins/multi-auth.md).
107+
108+
### Support the use of `filters.regex` with compressed data in `response-rewrite` plugin
109+
110+
Support the use of `filters.regex` with brotli and gzip compressed data in `response-rewrite` plugin.
111+
112+
For more information, see [PR #10588](https://github.com/apache/apisix/pull/10588) and [PR #10637](https://github.com/apache/apisix/pull/10637).
113+
114+
### Support specifying the required scopes in `openid-connect` plugin
115+
116+
Support specifying the required scopes in `openid-connect` plugin in the `required_scopes` attribute. When configured, the plugin will check if all required scopes are present in the scopes returned by the introspection endpoint.
117+
118+
For more information, see [PR #10493](https://github.com/apache/apisix/pull/10493).
119+
120+
### Support `Timing-Allow-Origin` header in `cors` plugin
121+
122+
New attributes `timing_allow_origins` and `timing_allow_origins_by_regex` are available in the cors plugin to support selective viewing of timing by origin.
123+
124+
For more information, see [PR #9365](https://github.com/apache/apisix/pull/9365).
125+
126+
### Support brotli compression algorithm
127+
128+
Support brotli compression algorithm in the new `brotli` plugin, which dynamically sets the behavior of [brotli in NGINX](https://github.com/google/ngx_brotli). Before using the plugin, you should first build and install brotli shared libraries.
129+
130+
For more information, see [PR #10515](https://github.com/apache/apisix/pull/10515) and [plugin documentation](https://github.com/apache/apisix/blob/master/docs/en/latest/plugins/brotli.md).
131+
132+
### Expand capability of parameter parsing in `body-transformer` plugin
133+
134+
Support parsing parameters from POST requests of `application/x-www-form-urlencoded` content type and URI parameters from GET requests in `body-transformer` plugin.
135+
136+
For more information, see [PR #10496](https://github.com/apache/apisix/pull/10496).
137+
138+
### Support the use of variables for sensitive information in `limit-count` plugin attributes
139+
140+
Support the use of variables for sensitive information in `limit-count` plugin attributes. For example, you could save `redis_password` to an environment variable and configure the value in the plugin as `$ENV://REDIS_PASSWORD`.
141+
142+
For more information, see [PR #10597](https://github.com/apache/apisix/pull/10597).
143+
144+
## Other Updates
145+
146+
- Improve performance with lua-resty-events module ([PR #10550](https://github.com/apache/apisix/pull/10550) and [PR #10558](https://github.com/apache/apisix/pull/10558))
147+
- Upgrade OpenSSL 1.1.1 to OpenSSL 3 ([PR #10724](https://github.com/apache/apisix/pull/10724))
148+
- Reduce the required number of `redis_cluster_nodes` from 2 to 1 in `limit-count` plugin ([PR #10612](https://github.com/apache/apisix/pull/10612))
149+
- Allow port to be an optional field when upstream nodes are of array type ([PR #10477](https://github.com/apache/apisix/pull/10477))
150+
- Fix counter sharing among consumers when using the `limit-count` plugin ([PR #10540](https://github.com/apache/apisix/pull/10540))
151+
- Add `redirect_after_logout_uri` attribute for `openid-connect` plugin, used when `end_session_endpoint` is not provided ([PR #10653](https://github.com/apache/apisix/pull/10653))
152+
- Fix counter sharing among consumers when using the `limit-count` plugin ([PR #10540](https://github.com/apache/apisix/pull/10540))
153+
- Fix `forward-auth` plugin 403 error when POST request body is too large ([PR #10589](https://github.com/apache/apisix/pull/10589))
154+
155+
## Changelog
156+
157+
For a complete list of changes in this release, please see [CHANGELOG](https://github.com/apache/apisix/blob/master/CHANGELOG.md#380).
Lines changed: 157 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,157 @@
1+
---
2+
title: "Apache APISIX 3.8.0 正式发布"
3+
authors:
4+
- name: "Xin Rong"
5+
title: "Author"
6+
url: "https://github.com/AlinsRan"
7+
image_url: "https://github.com/AlinsRan.png"
8+
- name: "Traky Deng"
9+
title: "Technical Writer"
10+
url: "https://github.com/kayx23"
11+
image_url: "https://github.com/kayx23.png"
12+
keywords:
13+
- Apache APISIX
14+
- API Gateway
15+
- API Management Platform
16+
- New Release
17+
- Cloud Native
18+
description: Apache APISIX 3.8.0 版本于 2024 年 1 月 15 日发布。该版本带来了一系列新功能、修复、以及相关用户体验优化。
19+
tags: [Community]
20+
---
21+
22+
我们很高兴地宣布 Apache APISIX 3.8.0 版本已经发布,带来了一系列新功能、修复、以及相关用户体验优化。
23+
24+
<!--truncate-->
25+
26+
该版本添加了许多新功能,包括支持 JWE 解密、brotli 压缩、路由和服务上的多种身份验证方法、`openid-connect` 插件中所需的范围等等。
27+
28+
## 新功能
29+
30+
### 支持使用 `jwe-decrypt` 插件解密请求中的 JWE
31+
32+
支持使用新的 `jwe-decrypt` 插件对请求中的 [JWE](https://datatracker.ietf.org/doc/html/rfc7516) 授权标头进行解密。
33+
34+
该插件为 JWE 加密创建一个内部端点 `/apisix/plugin/jwe/encrypt`,可以使用 `public-api` 插件公开该端点。您还将在 Consumers 中配置解密密钥。
35+
36+
有关更多信息,请参阅 [PR #10252](https://github.com/apache/apisix/pull/10252)[插件文档](https://github.com/apache/apisix/blob/master/docs/en/latest/plugins/jwe-decrypt.md)
37+
38+
### 支持路由和服务多种认证方式
39+
40+
新插件 `multi-auth` 插件支持路由和服务的多种身份验证方法。该插件迭代在 `auth_plugins` 属性中配置的身份验证插件列表。它允许使用不同身份验证方法的消费者共享相同的路由或服务。
41+
42+
例如,您可以让一个消费者使用基本身份验证:
43+
44+
```shell
45+
curl http://127.0.0.1:9180/apisix/admin/consumers -X PUT \
46+
-H "X-API-KEY: ${ADMIN_API_KEY}" \
47+
-d '{
48+
"username": "consumer1",
49+
"plugins": {
50+
"basic-auth": {
51+
"username": "consumer1",
52+
"password": "consumer1_pwd"
53+
}
54+
}
55+
}'
56+
```
57+
58+
另一个使用密钥身份验证的消费者:
59+
60+
```shell
61+
curl http://127.0.0.1:9180/apisix/admin/consumers -X PUT \
62+
-H "X-API-KEY: ${ADMIN_API_KEY}" \
63+
-d '{
64+
"username": "consumer2",
65+
"plugins": {
66+
"key-auth": {
67+
"key": "consumer2_s3cr3t"
68+
}
69+
}
70+
}'
71+
```
72+
73+
两个消费者使用各自的身份验证方法成功身份验证后都可以访问以下路由:
74+
75+
```shell
76+
curl http://127.0.0.1:9180/apisix/admin/routes/1 -X PUT \
77+
-H "X-API-KEY: ${ADMIN_API_KEY}" \
78+
-d '{
79+
"methods": ["GET"],
80+
"uri": "/get",
81+
"plugins": {
82+
"multi-auth":{
83+
"auth_plugins":[
84+
{
85+
"basic-auth":{ }
86+
},
87+
{
88+
"key-auth":{
89+
"query":"apikey",
90+
"hide_credentials":true,
91+
"header":"apikey"
92+
}
93+
}
94+
]
95+
}
96+
},
97+
"upstream": {
98+
"type": "roundrobin",
99+
"nodes": {
100+
"httpbin.org": 1
101+
}
102+
}
103+
}'
104+
```
105+
106+
有关更多信息,请参阅 [PR #10482](https://github.com/apache/apisix/pull/10482)[插件文档](https://github.com/apache/apisix/blob/master/docs/en/latest/plugins/multi-auth.md)
107+
108+
### 支持在 `response-rewrite` 插件中 `filters.regex` 和压缩数据配合使用
109+
110+
支持在 `response-rewrite` 插件中 `filters.regex` 与 brotli 或 gzip 压缩的数据数据配合使用。
111+
112+
有关更多信息,请参阅 [PR #10588](https://github.com/apache/apisix/pull/10588)[PR #10637](https://github.com/apache/apisix/pull/10637)
113+
114+
### 支持在 `openid-connect` 插件中指定所需的 scopes
115+
116+
支持在 `required_scopes` 属性中指定 `openid-connect` 插件中所需的 scopes。配置后,插件将检查内省端点返回的范围中是否存在所有必需的 scopes。
117+
118+
有关更多信息,请参阅 [PR #10493](https://github.com/apache/apisix/pull/10493)
119+
120+
### `cors` 插件中支持 `Timing-Allow-Origin` 标头
121+
122+
`cors` 插件中提供了新属性 `timing_allow_origins``timing_allow_origins_by_regex` ,以支持按来源选择性查看计时。
123+
124+
有关更多信息,请参阅 [PR #9365](https://github.com/apache/apisix/pull/9365)
125+
126+
### 支持 brotli 压缩算法
127+
128+
新插件 `brotli` 支持 brotli 压缩算法。该插件动态设置 [NGINX 中的 brotli](https://github.com/google/ngx_brotli) 的行为。在使用该插件之前,您应该首先构建并安装 brotli 共享库。
129+
130+
有关更多信息,请参阅 [PR #10515](https://github.com/apache/apisix/pull/10515)[插件文档](https://github.com/apache/apisix/blob/master/docs/en/latest/plugins/brotli.md)
131+
132+
### 扩展 `body-transformer` 插件中的参数解析能力
133+
134+
支持解析 `application/x-www-form-urlencoded` 内容类型的 POST 请求参数和 `body-transformer` 插件中的 GET 请求的 URI 参数。
135+
136+
有关更多信息,请参阅 [PR #10496](https://github.com/apache/apisix/pull/10496)
137+
138+
### 支持在 `limit-count` 插件属性中使用变量来敏感信息
139+
140+
支持在 `limit-count` 插件属性中使用变量来配置敏感信息。例如,您可以将 `redis_password` 保存到环境变量中,并将插件中的值配置为 `$ENV://REDIS_PASSWORD`
141+
142+
有关更多信息,请参阅 [PR #10597](https://github.com/apache/apisix/pull/10597)
143+
144+
## 其他更新
145+
146+
- 使用 lua-resty-events 模块提高性能([PR #10550](https://github.com/apache/apisix/pull/10550)[PR #10558](https://github.com/apache/apisix/pull/10558)
147+
- 将 OpenSSL 1.1.1 升级到 OpenSSL 3([PR #10724](https://github.com/apache/apisix/pull/10724)
148+
-`limit-count` 插件中所要求的 `redis_cluster_nodes` 数量从 2 个减少到 1 个([PR #10612](https://github.com/apache/apisix/pull/10612)
149+
- 当上游节点为数组类型时,允许端口为可选字段([PR #10477](https://github.com/apache/apisix/pull/10477)
150+
- 修复使用 `limit-count` 插件时消费者之间的计数器共享([PR #10540](https://github.com/apache/apisix/pull/10540)
151+
-`openid-connect` 插件添加 `redirect_after_logout_uri` 属性,在未提供 `end_session_endpoint` 时使用([PR #10653](https://github.com/apache/apisix/pull/10653)
152+
- 修复使用 `limit-count` 插件时消费者之间的计数器共享([PR #10540](https://github.com/apache/apisix/pull/10540)
153+
- 修复 POST 请求正文太大时的 `forward-auth` 插件 403 错误 ([PR #10589](https://github.com/apache/apisix/pull/10589))
154+
155+
## 变更日志
156+
157+
有关此版本中更改的完整列表,请参阅 [变更日志](https://github.com/apache/apisix/blob/master/CHANGELOG.md#380)

0 commit comments

Comments
 (0)