Apache APISIX 3.5.0 正式发布


Apache APISIX 3.5.0 现已正式发布,此版本带来了一些新功能和改进的用户体验。包括在主机级别动态配置 TLS 版本、与 Chaitin WAF 的集成、强制删除资源、在独立模式下部署 APISIX 时在配置文件中使用环境变量等。此外,还包含了一些重要的变化。

重大变更

  1. 在 request-id 插件中移除雪花算法支持

移除 request-id 插件中的雪花算法支持。该算法引入了对 etcd 的不必要依赖,当 etcd 不可用时,可能会显著影响 APISIX 的性能。请考虑在算法中使用 uuid 选项。

有关更多背景信息,参阅邮件列表中的提案 。

相关 PR 见 #9715。

  1. 删除对 OpenResty 1.19 的支持

如果你当前正在使用此版本,建议计划升级到 OpenResty 版本 1.21 及更高版本。

相关 PR 见 #9913。

  1. 改善 L4 和 L7 代理的可用性并删除 apisix.stream_proxy.only

提高 L4 和 L7 代理的可用性。 此更改删除了 apisix.stream_proxy.only 选项,并简化了启用和禁用 L4 和 L7 代理的用法。

L4 和 L7 代理可在 config.yaml 文件中如下所示启用:

  • 启用 L7 代理(默认启用):apisix.proxy_mode: http

  • 启用 L4 代理:apisix.proxy_mode:stream

  • 启用 L7 和 L4 代理:apisix.proxy_mode: http&stream

有关更改后如何使用 stream 代理的更多信息,参阅如何启用 stream 代理。

相关 PR 见 #9607。

  1. 在 ua-restriction 插件中不允许同时使用 allowlist 和 denylist

在 ua-restriction 插件中,不再允许同时使用 allowlist 和 denylist。您应该只配置其中之一的选项。

相关 PR 见 #9841。

  1. 重构并改进 Admin API 中的插件接口 

通过 /apisix/admin/plugins?all=true 获取所有插件属性的接口即将被弃用。 未来 Admin API 将仅支持一次获取一个插件的属性。建议你使用以下端点和参数来满足你的要求:

/apisix/admin/plugins/{plugin_name}?subsystem={subsystem}

或者,你可以使用 /v1/schema 获取并解析 Control API 中所有插件的架构。

如果你只想获取插件名称列表,可以使用以下命令:

/apisix/admin/plugins/list?subsystem={subsystem}

有关更多详细信息,请参阅管理 API 中的插件。

相关 PR 见 #9580。

新功能

  1. 支持主机级别动态配置TLS版本

支持运行时为各个 SNI 配置 TLS 版本。该配置优先于 config-default.yaml 或 config.yaml 中的 ssl_protocols 静态配置,并且不需要重新加载 APISIX,从而提供了一种更细粒度的方法来与你的基础设施集成。

例如,你可以使用以下命令将域 test.com 配置为接受 TLS 版本 1.2 和 1.3 的 TLS 连接:

curl http://127.0.0.1:9180/apisix/admin/ssls/1 -X PUT \
  -H "X-API-KEY: ${ADMIN_API_KEY}" \
  -d '{
    "cert": "$cert",
    "key": "$key",
    "snis": ["test.com"],
    "ssl_protocols": [
        "TLSv1.2",
        "TLSv1.3"
    ]
  }'

有关该功能和示例的更多信息,参阅 SSL 协议。

相关 PR 见 #9903。

  1. 支持强制删除资源

支持使用 Admin API 强制删除资源。 默认情况下,管理 API 检查资源之间的引用,并且不允许删除正在使用的资源。

借助此新功能,你可以通过发送带有 URL 参数 force=true 的 DELETE 请求来强制删除,如下所示:

curl "http://127.0.0.1:9180/apisix/admin/upstreams/1?force=true" -X DELETE \
  -H "X-API-KEY: ${ADMIN_API_KEY}"

有关该功能和示例的更多信息,可参阅强制删除。

相关 PR 见 #9810。

  1. 支持 apisix.yaml 中的环境变量 支持在 apisix.yaml 中使用环境变量。

例如,你可以将上游服务的主机 IP 和端口设置为环境变量,并使用 apisix.yaml 中的变量,如下所示:

routes:
  -
    uri: "/test"
    upstream:
      nodes:
        "${{HOST_IP}}:${{PORT}}": 1
      type: roundrobin
#END

有关该功能和示例的更多信息,参阅管理 API 中的使用环境变量。

相关 PR 见 #9855。

  1. 在 Admin API 中添加架构验证端点

将 /apisix/admin/schema/validate/{resource} 端点添加到 Admin API 以验证配置的架构。你现在可以验证配置的正确性,而无需向端点发送资源创建请求。

例如,你可以使用以下命令验证路由的架构:

curl http://127.0.0.1:9180/apisix/admin/schema/validate/routes -i -X POST \
  -H "X-API-KEY: ${ADMIN_API_KEY}" \
  -d '{
    "uri": 1980,
    "upstream": {
        "scheme": "https",
        "type": "roundrobin",
        "nodes": {
          "nghttp2.org": 1
        }
     }
  }'

由于此架构不正确,你应该会看到类似于以下内容的响应:

HTTP/1.1 400 Bad Request
...
{"error_msg":"property \"uri\" validation failed: wrong type: expected string, got number"}

有关该功能和示例的更多信息,参阅 Admin API 中的架构验证。

相关 PR 见 #10065。

  1. 通过 chaitin-waf 插件支持与 Chaitin WAF 集成

通过 chaitin-waf 插件支持与长亭 WAF 集成,将网关流量转发到长亭 WAF 进行恶意流量的检查和检测。

例如,你可以在插件元数据上配置长亭 WAF 的地址,所有 chaitin-waf 插件实例都会引用该地址。 配置 host 为长亭 SafeLine WAF 检测服务主机、unix 域套接字、IP 或域; 以及 port,如下所示:

curl http://127.0.0.1:9180/apisix/admin/plugin_metadata/chaitin-waf -X PUT \
  -H "X-API-KEY: ${ADMIN_API_KEY}" \
  -d '{
  "nodes":[
      {
        "host": "unix:/path/to/safeline/resources/detector/snserver.sock",
        "port": 8000
      }
    ]
  }'

然后,你可以在路由上启用该插件,并仅将符合指定条件的流量转发到 WAF:

curl http://127.0.0.1:9180/apisix/admin/routes/1 -X PUT \
  -H "X-API-KEY: ${ADMIN_API_KEY}" \
  -d '{
   "uri": "/*",
   "plugins": {
       "chaitin-waf": {
           "match": [
                {
                  "vars": [
                    ["http_waf","==","true"]
                  ]
                }
            ]
        }
    },
   "upstream": {
       "type": "roundrobin",
       "nodes": {
          "httpbun.org:80": 1
        }
     }
  }'

如果检测到潜在的恶意请求,例如以下请求,它会尝试注入攻击:

curl -i "http://127.0.0.1:9080/getid=1%20AND%201=1" \
  -H "Host: httpbun.org" \
  -H "waf: true"

应该看到类似于以下内容的响应:

HTTP/1.1 403 Forbidden
...
X-APISIX-CHAITIN-WAF: yes
X-APISIX-CHAITIN-WAF-TIME: 2
X-APISIX-CHAITIN-WAF-ACTION: reject
X-APISIX-CHAITIN-WAF-STATUS: 403
...
{"code": 403, "success":false, "message": "blocked by Chaitin SafeLine Web Application Firewall", "event_id": "51a268653f2c4189bfa3ec66afbcb26d"}

有关该功能和示例的更多信息,可参阅 chaitin-waf 插件文档。

相关 PR 见 #9838。

其他更新

  • 支持在 openid-connect 插件中配置代理服务器(PR #9948)
  • 支持将响应标头从 OPA 服务器发送到 opa 插件中的上游服务 (PR #9710)
  • 支持在 file-logger 插件中使用变量以允许条件日志记录(PR #9712)
  • 支持 mocking 插件中响应头的配置(PR #9720)

详情可参见 CHANGELOG。


相關推薦

2023-11-21

Apache APISIX 3.7.0 版本已经发布,带来了一系列新功能、Bug 修复和相关用户体验优化。该新版本添加了许多新功能,包括对 Consul 服务发现的 ACL 令牌的支持、openid-connect 插件中的授权参数、Nacos AK/SK 身份验证等,此外还包含了一

2024-05-01

Apache APISIX 3.8.1 版本已经发布。此新版本包含了一项重要修复,旨在进一步优化和提升用户体验。 修复 forward-auth 插件超时的问题 当客户端使用 POST 方法发送请求,但身份验证服务 API 实际上需要 GET 方法时,可能出现超时问题

2023-01-11

个版本 v1.5 发布,已经过了 3 个月,我们很高兴地宣布 Apache APISIX Ingress v1.6 正式发布! 在该版本中,共有 29 位贡献者 参与代码提交,其中 17 位是新晋贡献者 ,感谢大家的支持和参与! 本次发布的 Apache APISIX Ingress v1.6 版本

2022-11-19

作为开源的云原生 API 网关,Apache APISIX 致力于在性能和使用体验上为开发者和用户们带来更好更优异的表现,帮助企业解决一些关于云原生和微服务技术下遇到的新问题。 在 9 月底,Apache APISIX 发布了 3.0.0-beta 预览版,为用

2024-10-22

Apache APISIX 3.11.0 版本已经发布,带来了一系列新功能、修复、以及相关用户体验优化。这个新版本增加了许多新功能,包括添加一系列 AI 插件以集成 LLM 提供商、支持 AWS 和 GCP Secret Manager 进行 Secret 管理等等。 此外,该版本还

2023-07-26

Apache APISIX 3.2.2 现已发布,此版本包含了一系列的修复和优化。 修复 升级 lua-resty-jwt 依赖版本 将 lua-resty-jwt 的依赖版本从 0.2.4 升级到 0.2.5,避免 APISIX jwt-auth 插件中身份验证绕过的安全

2023-03-18

内容感兴趣,请参考 3.2 发布的 CHANGELOG:https://github.com/apache/apisix/blob/release/3.2/docs/zh/latest/CHANGELOG.md#320

2023-06-08

等丰富的流量管理功能。从其主要功能和特点角度来看,Apache APISIX 可以替代 Nginx 来处理南北流量,也可以扮演 Istio 控制平面和 Envoy 数据平面的角色来处理东西向流量。 Bugfix 修复 core.request.add_header 中的无效缓存问题。避

2023-07-25

Apache APISIX 3.4.1 版本现已正式发布,其中包含了针对 JWT 的安全补丁。 修复 升级 lua-resty-jwt 依赖版本 为了解决 APISIX jwt-auth 插件中身份验证绕过的安全风险,将 lua-resty-jwt 的依赖版本从 0.2.4升级到&nbs

2022-11-05

直播嘉宾 ▲ 王晔倞(头哥), 支流科技技术 VP、Apache APISIX Committer   ▲  tison,Apache Member & Incubator Mentor,Apache Flink Committer,微信公众号 “夜天之书” 作者   ▲ 李志信, ioc-golang 作者,Apache Dubbo P

2023-02-07

2023年1月26日,Apache 软件基金会 (ASF) 官方宣布 Apache bRPC 正式毕业,成为 Apache 顶级项目 (Top-Level Project, TLP)。 Apache bRPC 是由百度初始创立并持续贡献的工业级别 RPC 开源项目,在 2018 年正式贡献给 Apache 软件基金会进行项目孵化

2022-06-10

Apache Hop 2.0.0 已正式发布。 Apache Hop(Hop 是 Hop Orchestration Platform 的缩写)是一个灵活、元数据驱动的数据编排、工程和集成平台。该项目起源于二十多年前的 ETL 平台 Kettle,经过几年的重构,于 2020 年 9 月进入 ASF 孵化器。 Kettle

2023-08-16

关于Apache ShenYu Apache ShenYu 一款使用 Java Reactor 开发的响应式API 网关。以其高性能,动态灵活的流量管控,热插拔,易部署等特性,开箱即用为用户提供整套全生命周期的 API网关,包含 API注册、服务代理、协议转换、API文档与 A

2024-01-30

亲爱的社区小伙伴们,Apache Doris 2.0.4 版本已于 2024 年 1 月 26 日正式发布,该版本在新优化器、倒排索引、数据湖等功能上有了进一步的完善与更新,使 Apache Doris 能够适配更广泛的场景。此外,该版本进行了若干的改进与优化