写点什么

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

2018 年 5 月 08 日

看新闻很累?看技术新闻更累?试试下载 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 年 5 月 08 日 19:008088
用户头像

发布了 376 篇内容, 共 93.2 次阅读, 收获喜欢 209 次。

关注

评论

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

为您收录的操作系统系列 - 线程小常识

Arvin

线程

我凭借这份“2021全网最全Java面试清单”彻底征服阿里面试官

比伯

Java 编程 程序员 架构 面试

本期办公自动化需要的软件一览

Tango

日更挑战 28天写作 2月春节不断更 IT蜗壳

让听见炮火的人来做决策,做决策的要好好听听炮火

数列科技杨德华

28天写作

关于个人认知的一些碎碎念「Day 6」

道伟

心理学 认知 28天写作

(28DW-S8-Day6)区块链如何解决双重支付及防篡改

mtfelix

比特币 区块链 防篡改 28天写作 双重支付

基于SpringBoot实现文件的上传下载

Java鱼仔

springboot

【管理笔记13】行销能力与应变行为

俊毅

“定义”

Nydia

视频号直播和 PageRank 算法 [待完善]

Sicolas Flamel

机器学习

山东区块链赋能农产品溯源平台解决方案

源中瑞-龙先生

爬虫知识记录之一

头号摄影师

爬虫

wordpress的wp-sitemap.xml错误,提示:This page contains the following errors: error on line 2 at column 6: XML declaration allowed only

wood

Elasticsearch 一个 field 两个索引

escray

elastic 28天写作 死磕Elasticsearch 60天通过Elastic认证考试 2月春节不断更

敏捷团队实践

Teobler

项目管理 敏捷 敏捷开发 工程实践 敏捷开发管理

分布式存储单主、多主和无中心架构的特征与趋势

读字节

分布式 分布式存储 大数据架构 分布式文件系统 大数据 Google

【Python】关于 Type Hints 你应该知道这些

zhujun

Python

泰康和百度智能云为何相互需要?

吴俊宇

百度 保险数字化 泰康

28天瞎写的第二百四十四天:冥想的种类

树上

冥想 28天写作 正念

记录-见证坚持和时间的力量

Ian哥

28天写作

手把手教你爬取优酷电影信息-1

happlyfox

学习 爬虫 28天写作 2月春节不断更

只有两颗糖,什么时候给——再谈峰终定律

Justin

心理学 28天写作 游戏设计

手把手教你爬取优酷电影信息-2

happlyfox

学习 28天写作 2月春节不断更

水墨屏开发设备,旧 Kindle 改造而成

HelloGitHub

开源 硬件 开源项目 kindle

Kafka.08 - 消息交付可靠性保障

insight

kafak 2月春节不断更

微信小程序开发笔记(一)

陈飞

小程序

使用 Tye 辅助开发 k8s 应用竟如此简单(六)

newbe36524

Docker Kubernetes 微服务 dotnet

1.2 Go语言从入门到精通:编写第一个Go程序

xcbeyond

go golan 28天写作 Go语言从入门到精通

前端HTML5面试官和应试者一问一答

魔王哪吒

html 程序员 前端 28天写作 2月春节不断更

敏捷技术实践之TDD

Teobler

敏捷 敏捷开发 TDD 极限编程 测试驱动开发

Selenium 自动化前的补充知识,Frame操作、多窗口切换、模糊定位、复合定位

梦想橡皮擦

Python 28天写作 2月春节不断更

混合云之争的开端与终途

混合云之争的开端与终途

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