写点什么

NGINX 发布支持动态配置的开源 Web 服务器

  • 2018-05-08
  • 本文字数:1380 字

    阅读完需:约 5 分钟

看新闻很累?看技术新闻更累?试试下载 InfoQ 手机客户端,每天上下班路上听新闻,有趣还有料!

NGINX最近发布了NGINX Unit 1.0 版。NGINX Unit 是一种开源的Web 和应用服务,它支持远程配置和动态配置,使得配置上的更改不会对服务造成中断。Unit 1.0 还支持在同一实例中运行Go、Perl、PHP、Python 和Ruby 等多种语言,也支持同一语言的多个版本。

NGINX Unit 并非依赖于静态的配置文件,而是使用 JSON通过REST API 进行配置。所有的配置直接存储在内存中,支持运行中的服务无需重启即可应用配置更改。路由过程同样也是持续的,不需要重启。

Unit 的基本配置需要指定至少一个监听器和一个应用。在对监听器的定义中,指定了 Unit 监听的具体 IP 和端口,并重定向到一个命名的应用。在对应用的定义中,可支持指定具体的语言、应用文件的目录和过程的数量。

例如,用户可以做如下的配置,在端口 8300 上定义一个监听器,为“/www/blogs/scripts”目录中的 PHP 应用提供服务,最大可使用 20 个进程:

复制代码
{
"listeners": {
"*:8300": {
"application": "blogs"
}
},
"applications": {
"blogs": {
"type": "php",
"processes": 20,
"root": "/www/blogs/scripts",
"index": "index.php"
}
}
}

Unit 官方文档中的推荐做法,是将上述配置存储在一个(受版本控制的)文件中,然后 POST 到服务器端。如果上述配置是存储在一个名为 start.json 的文件中,那么可以使用如下命令创建初始配置:

复制代码
# curl -X PUT -d @/path/to/start.json --unix-socket /path/to/control.unit.sock http://localhost/

Unit 实现了路由进程和具体运行应用代码的应用进程相分离。每个应用过程池在自身的沙箱中运行,这确保了该进程与其它进程的分离。这种分离支持运行不同语言的多个应用分享同一个服务器。

图 NGINX Unix 的架构(NGINX 官方提供)

下面的配置例子,设置在同一个 Unit 服务器中运行 Go 和 Perl 应用:

复制代码
{
"listeners": {
"*:8500": {
"application": "go_chat_app"
},
"127.0.0.1:8600": {
"application": "bugtracker"
}
},
"applications": {
"go_chat_app": {
"type": "go",
"user": "www-chat",
"group": "www-chat",
"working_directory": "/www/chat",
"executable": "bin/chat_app"
},
"bugtracker": {
"type": "perl",
"processes": 3,
"user": "www",
"group": "www",
"working_directory": "/www/bugtracker",
"script": "app.psgi"
} }
}

据 NGINX 产品负责人 Owen Garrett 介绍,Unit 适用于独立架构,也适用于基于微服务的架构。它支持对进程做按需扩展,并在每个进程自身的沙箱中执行该进程。

NGINX 规划在未来的版本中添加对 Java 和 Node.js 语言的支持。企业还规划支持 SSL 和 HTTP/2,以及使用 URI 和主机名提供对静态内容和路由的服务。

NGINX Unit 使用 Apache License 2.0 许可开源,针对大多数操作系统提供了预构建的软件包,包括 Debian CentOS Ubuntu 等。在 Docker Hub 上也提供了 Unit 的 Docker 容器

查看英文原文: NGINX Releases Open Source Web Server with Dynamic Configuration

2018-05-08 19:0011506
用户头像

发布了 391 篇内容, 共 147.4 次阅读, 收获喜欢 257 次。

关注

评论

发布
暂无评论
发现更多内容

NFTScan 正式上线 Scroll NFTScan 浏览器和 NFT API 数据服务

NFT Research

NFT NFTScan nft工具

ZGC关键技术分析

得物技术

Java 高性能 GC算法

最新开源、更擅长推理的中文大模型

百度开发者中心

人工智能 大模型

大模型训练-实战的模型、算力与数据训练

百度开发者中心

人工智能 大模型训练

千帆大模型平台引领Falcon-180B适配创新

百度开发者中心

人工智能 Prompt 千帆大模型平台

云图说|交换数据空间Exchange Data Space

华为云开发者联盟

数据交换 开发 华为云 华为云开发者联盟

《永劫无间》新版本上线,英特尔锐炫及XeSS即时支持,助力玩家丝滑畅游!

E科讯

将 Amazon EC2 到 Amazon S3 的数据传输推向100Gbps 线速

亚马逊云科技 (Amazon Web Services)

S3 Amazon EC2 亚马逊云科技

云端聚首,造炬成阳 | 瑞技荣获思科云CCC合作伙伴授牌

Bytebridge

平台工程动态 Monthly News 2023-9

杨振涛

DevOps 云原生 开发者体验 内部开发者平台 平台工程,

IDO官网预售 创建 ICO 解决方案:为您的代币发行奠定基础

区块链软件开发推广运营

交易所开发 dapp开发 区块链开发 链游开发 NFT开发

文末福利免费送 | KaiwuDB AI 时代数据库技术专题沙龙,名额仅剩 20 位,报名从速!

KaiwuDB

数据库 KaiwuDB

什么是智慧光伏?智慧光伏电站运维平台

2D3D前端可视化开发

物联网 数字孪生 三维可视化 智慧光伏 智慧电站

倒计时 2 天!本周六,Apache Doris 年度技术盛会相约北京!

SelectDB

数据库 大数据 数据仓库 实时数仓 apache doris

当AI遇上3D建模:一场创意与技术的完美碰撞!

Finovy Cloud

AI 3D

熟练使用 Redis 的五大数据结构:Java 实战教程

互联网工科生

Java redis

2个数仓中不等值关联优化案例

华为云开发者联盟

数据库 后端 华为云 数仓 华为云开发者联盟

博睿数据 Bonree ONE 秋季产品发布会,即将震撼启幕!

博睿数据

可观测性 博睿数据 智能化平台

区块链支持物联网的4种方式

BSN研习社

语音识别技术中的实时处理与云计算

数据堂

语音识别技术在智能家居中的应用与挑战

数据堂

NGINX发布支持动态配置的开源Web服务器_REST_Matt Campbell_InfoQ精选文章