NGINX Unit 1.31.0 发布,引入 Unit WebAssembly


Nginx Unit 是一个动态应用服务器,能够与 Nginx Plus 和 Nginx 开源版并行或独立运行。Nginx Unit 支持 RESTful JSON API,可以在不中断服务的情况下更改配置,并可运行基于多种语言和架构的应用。Nginx Unit 生来就是为满足分布式应用的需求而设计的,可为您的服务网格奠定坚实的基础。

Nginx Unit 1.31.0 正式发布,这是继 5 月份发布 1.30 之后的又一个重要里程碑。此版本中引入 Unit WebAssembly (WASM) 功能,代表了 Unit 功能的重大飞跃。

还带来了显着的新增功能 - 能够发送 response headers 并利用配置中 response headers 变量的功能。这些增强功能将大大增加提高灵活性和自定义选项。以及一些 bug 修复,并引入了更多改进措施,以确保无缝增强用户体验。

  • Python 支持 ASGI lifespan_state
  • unitc CLI 工具现在可对配置 URI 进行交互式编辑

Server-Side WebAssembly: Technology Preview

由于 Unit 已经为各种编程语言运行时提供了原生支持,因此在 NGINX Unit 中添加服务器端 WebAssembly 支持的挑战也就水到渠成了。

Unit 现在可以将 WebAssembly 模块作为本机应用程序类型运行。

Working with Response Headers

完全控制发送回客户端的 HTTP response headers 是社区一直在期待的功能。在 1.31 中添加了对使用 Unit 路由器添加、删除或覆盖 HTTP response headers 以及使用专用 response header 变量中的值的支持。

Set Response Headers

如上所述,你可以使用 Unit 的路由器来添加、删除或覆盖 response headers。

{
"listeners": {
"*:80": {
"pass": "routes"
}
}
}

使用 Unit 来托管前端和 Web API。在这种情况下,语言或单元应用程序对象并不重要。当前的配置如下所示:

{
"listeners": {
"*:8080": {
"pass": "routes/app"
}
},

"routes": {
"app": [
{
"match": {
"uri": [
"/api/*"
]
},

"action": {
"pass": "applications/api"
}
},
{
"action": {
"share": [
"/var/www/frontend$uri",
"/var/www/frontend/index.html"
]
}
}
]
}
}

新引入的response_headers对象可以添加到任何 action对象中。该response_headers对象包含一个 key/value 对列表,每个 key/value 对定义一个 header。如果 header name 与响应中已存在的 response header 匹配,则其值将被替换。否则,将创建一个新的 response header。值null 从响应中省略 header。空字符串则不然。首先,要隐藏 X-VersionAPI 应用程序发送的 header:

{
"action": {
"pass": "applications/api",
"response_headers": {
"X-Version": null
}
}
}

对于前端,希望添加版本哈希来识别已部署的版本,而无需深入研究源代码:

{
"action": {
"share": [
"/var/www/frontend$uri",
"/var/www/frontend/index.html"
],
"response_headers": {
"X-FE-Version": "abc1234def"
}
}
}

除了 fixed values 之外,还可以调用 NJS 函数来使用一些更复杂的规则创建值。

"Upper-Case": "`${host.toUpperCase()}`"

Use Response Header Variables

在 1.31 中添加了一组新的变量来控制 response headers。当 Unit 收到来自 Unit 上托管的应用程序的响应,并且你想要根据应用程序共享的值修改现有  response headers 时,Unit 必须保留该特定值。

[
{
"action": {
"pass": "applications/calc",
"response_headers": {
"Content-Type": "${response_header_content_type};charset=iso-8859-1"
}
}
}
]

CLI 交互模式

在1.29中引入了curl的封装脚本来简化与Unit API的交互。在1.31中则为该脚本添加了交互式编辑模式:

$ unitc EDIT /config

这将在$EDITOR当前定义的编辑器中打开给定端点的 JSON 配置。在大多数情况下,这将默认为 nano。如果你想使用其他编辑器,比如 vim

$ EDITOR=vim unitc EDIT /config

保存更改会自动应用更改并重新配置 Unit。

更多详情可查看官方公告。


相關推薦

2022-12-19

可为您的服务网格奠定坚实的基础。 Nginx Unit 1.29.0 正式发布,更新内容如下: NGINX JavaScript 集成 NGINX JavaScript(njs)是一个服务器端的 JavaScript 运行时,为超快的初始化进行了优化。njs 最初是为扩展 NGINX 而设计的,它的架构

2022-09-15

Nginx Unit 1.28.0 已正式发布,新版本在可观测性方面进入了一个里程碑: 新版本支持获取有关连接、请求和其他每个应用程序指标的基本信息 上述数据可通过 Nginx Unit 的 RESTful API 获取 除此之外,Nginx Unit 1.28.0

2022-06-06

可为您的服务网格奠定坚实的基础。 Nginx Unit 1.27.0 正式发布,更新内容如下: 将 HTTP 请求重定向到 HTTPS 自从在 Unit 中加入了 TLS 支持和证书管理,就被要求简化将纯文本 HTTP 请求重定向到启用 TLS 的监听器。现在可以通过配置

2022-01-21

使用 NGINX 之后,Igor 于 2004 年 10 月 4 日正式对外公开发布 NGINX,并将其开源。 此后长达 7 年的时间里,他独自一人负责 NGINX 的开发和维护工作。在此期间,他编写了数十万行代码,NGINX 提供的功能也不再是仅包含 Web 服

2022-11-04

OceanBase v4.0.0_CE 已经发布,企业级开源分布式数据库 此版本更新内容包括: OceanBase 数据库社区版 V4.0.0.0_CE OceanBase 社区发布 V4.0.0 版本是对分布式数据库系统架构设计的全面升级,定位为 Beta 测试版本,社区会关注用户使用反

2022-08-11

Visual Studio 2022 17.3 正式发布,新版本带来了不少微软此前承诺的新功能,如 .NET MAUI GA 工具、Azure Container 应用程序等;以及在开发者社区中建议的新功能。 Visual Studio 2022 v17.3 更新内容如下: MAUI 工作负荷 GA 生成 MAUI/Blazor C

2023-08-04

大的变化和修改,代码进行了重构。MySQL 8.0 在 2016-09-12 发布, 重写了 5.7 中解析器的近 50% 的代码。MySQL 将编程语言都统一到 C++,编译器使用最新版本,代码风格采用 Google C++ Style,统一了 300 人的开发团队的代码标准。 目前 M

2022-10-08

HertzBeat v1.2.0 已经发布,高性能监控告警系统。 V1.2.0 官网: hertzbeat.com | tancloud.cn 大家好,HertzBeat v1.2.0 发布啦!这个版本支持了更强大的jsonpath去采集自定义监控指标,将springboot版本升级到2.7,支持指标单位的提取转换展示等

2022-11-14

VirtualEnv 20.16.7 发布了,VirtualEnv 用于在一台机器上创建多个独立的 Python 运行环境,可隔离项目之间的第三方包依赖,为部署应用提供方便,把开发环境的虚拟环境打包到生产环境即可,不需要在服务器上再折腾一翻。 

2024-04-12

用 Go 语言编写,依赖 Go 环境和 libxml。 Tsuru 1.20.3 已发布,此版本带来如下内容: ebeccf4 feat:验证 prometheus 触发器名称( #2691) 1ff3c39 删除未使用的 tsuru_unit_agent 代码 ( #2686 ) 32141a6 添加验证以避

2022-05-04

使用 Kotlin 构建异步服务器和客户端的 Web 框架,上个月发布了重要的新版本 2.0,并于近日发布了首个补丁更新 2.0.1。 Ktor 2.0 引入了许多新功能,以及破坏性变化,官方称这让他们有机会执行一些维护工作并摆脱遗留决策。尽

2022-08-23

Databend v0.8 发布了,Databend 是一个基于 Rust 开发的现代化云数据仓库,致力于实现高性能可弹性扩展的实时数据分析,激活用户的数据潜能。 发布公告称,Databend v0.8 的开发于 3 月 28 号开始,总计 5000+ commits,4600+ 文件变更。

2023-10-25

你来轰趴啦!1028 苏州源创会,一起寻宝 AI 时代 KubeEdge 发布 v1.15.0 版本。新版本新增多个增强功能,在边缘节点管理、边缘应用管理、边缘设备管理等方面均有大幅提升。 KubeEdge v1.15.0 新增特性: 支持 Windows 边缘节点 基

2022-10-24

量,减少集群中的磁盘寻道和网络调用。 Dgraph v22.0.0 发布后将停止对 v21.12.0 的支持,这对任何从 v21.12.0 转移到 v22.0.0 的用户来说都是一个重大的变化。用 v21.12 创建的数据文件与 v22.0.x 不兼容。 修复 GraphQL fix(GraphQL)