写点什么

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:0011538
用户头像

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

关注

评论

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

架构实战营 1-1 架构概念随堂测验

西山薄凉

「架构实战营」

小令观点 | 不希望我的身份被别人冒用,该怎么办呢?

令牌云数字身份

网络安全 人脸识别 芯片技术

火山引擎边缘云荣获2022全球分布式云大会两项大奖

火山引擎边缘云

云原生 边缘计算 边缘云 火山引擎边缘计算

极客时间运维进阶训练营第四周作业

LiaoWD

pipeline SonarQube jenkins高级用法

App长登录思考与实现

石君

信息安全 APP开发 认证

常用的十大Python开发工具

千锋IT教育

移动开发跨平台框架,你了解多少?

FinClip

华为云数据库GaussDB(for Cassandra)揭秘:高性能低成本是什么样的体验?

科技说

内部CRM和商业化SAAS CRM的区别

久歌

SaaS 架构设计 CRM

照亮无尽前沿之路:华为正成为科技灯塔的守护者

脑极体

华为云数据库GaussDB (for Cassandra) 数据库治理 -- 大key与热key问题的检测与解决

IT科技苏辞

华为云数据库GaussDB(for Influx)与开源企业版性能对比

清欢科技

WeLink互动直播:维护网课秩序,杜绝外人乱入

与时俱进的时代

2022-12-01:从不订购的客户。找出所有从不订购任何东西的客户,以下数据的答案输出是Henry和Max,sql语句如何写? DROP TABLE IF EXISTS `customers`; C

福大大架构师每日一题

数据库 福大大

接口测试快速入门-1

度假的小鱼

接口测试 11月月更

50亿海量数据如何高效存储和分析? 华为云数据库GaussDB (for Cassandra) 3个秘诀搞定

IT科技苏辞

04 Redis sentinel 模式存储试卷

神奇的叶叔叔

2023免费双系统虚拟机软件CrossOver2023

茶色酒

crossover CrossOver2023

华为云数据库GaussDB(for Cassandra)揭秘:内存异常增长的排查经历

科技说

测试如何发展副业,提升斜杠收入

老张

码农副业 斜杠

华为自研分布式时序数据库集群:初始GaussDB(for Influx)

清欢科技

爱奇艺:基于龙蜥与 Koordinator 在离线混部的实践解析 | 龙蜥技术

OpenAnolis小助手

开源 cpu 爱奇艺 混部 龙蜥操作系统

干货|成为优秀软件测试工程师的六大必备能力

飞算JavaAI开发助手

国产自研、安全、高可用——袋鼠云大数据基础平台EasyMR筑基企业数字化转型

袋鼠云数栈

大数据 hadoop 数据中台 基础数据平台 12 月 PK 榜

Web Development Technology Trends for 2023

Mahipal_Nehra

UI UX AI Codec Metaverse

NTFS读写工具Tuxera for Mac2023下载及功能介绍

茶色酒

Tuxera2022 Tuxera NTFS2022 Tuxera NTFS Mac2022

空间节省50%,时序性能提升5倍,三一重工从Hadoop+Spark到MatrixDB架构变迁实现One for ALL

YMatrix 超融合数据库

三一重工 超融合数据库 数据库· YMatrix

RocketMQ 全链路灰度探索与实践

Apache RocketMQ

RocketMQ 服务端 灰度

【愚公系列】2022年12月 微信小程序-页面栈和页面路由

愚公搬代码

12月月更

数据治理:指标体系管理

用友BIP

腾讯智慧农业首次亮相,助力青海大通农产品走进大湾区

科技热闻

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