写点什么

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

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

    阅读完需:约 5 分钟

AI 大模型超全落地场景&金融应用实践,8 月 16 - 19 日 FCon x AICon 大会联诀来袭、干货翻倍!

看新闻很累?看技术新闻更累?试试下载 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:0010624
用户头像

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

关注

评论

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

谈 C++17 里的 Strategy 模式

hedzr

c++ 设计模式 策略模式 Design Patterns c++17

【Flutter 专题】40 日常问题小结 (一)

阿策小和尚

Flutter 小菜 0 基础学习 Flutter Android 小菜鸟 10月月更

一分钟搞懂FAST Agile

俞凡

敏捷 10月月更

深入理解Git submodules

俞凡

git 架构 10月月更

【Zookeeper技术专题】从Paxo算法出发认识一下Zookeeper

洛神灬殇

PAXOS ZooKeeper原理 paxos协议 Paxo 10月月更

最短路径算法

Dobbykim

算法 图论

006云原生之Service Mesh(Spring Cloud)

穿过生命散发芬芳

云原生 10月月更

一分钟搞懂SOLID原则

俞凡

架构 10月月更

JavaScript 中的文档对象模型 DOM

devpoint

CSS html DOM 10月月更

3. 有点难~ Python函数式编程中 itertools 模块

梦想橡皮擦

10月月更

关心你的团队,这才是最有效的管理技巧

俞凡

管理 10月月更

SpringMVC源码分析-HandlerAdapter(6)-ModelFactory组件分析

Brave

源码 springmvc 10月月更

架构实战训练营|课后作业|模块5

Frode

「架构实战营」

【LeetCode】最长回文子串Java题解

Albert

算法 LeetCode 10月月更

容器 & 服务:Helm Charts(二)安装与使用

程序员架构进阶

Kubernetes 容器 Helm Helm Charts 10月月更

第 11 章 -《Linux 一学就会》- 重定向和文件的查找

学神来啦

Linux linux运维 linux学习 linux云计算

团队管理之如何成为核心员工

小诚信驿站

团队管理 管理 引航计划 内容合集

网络架构知识总结

十二万伏特皮卡丘

计算架构模式之接口篇

十二万伏特皮卡丘

第 10 章 -《Linux 一学就会》- centos8系统进程管理

学神来啦

Linux 运维 linux学习 linux云计算

漫游语音识别技术——带你走进语音识别技术的世界

攻城先森

深度学习 音视频 nlp 语音识别

Scrum Patterns:Sprint回顾(译)

Bruce Talk

敏捷 译文 Agile Scrum Patterns

工业级高精度电磁流量计解决方案

不脱发的程序猿

ADI 工业高精度传感器 流量传感器 优秀论文期刊

阿里开源的这个库,让 Excel 导出不再复杂(简简单单的写)

看山

Java EasyExcel 10月月更

linux之autojump命令

入门小站

Linux

如何激励员工?

石云升

项目管理 管理 引航计划 内容合集 10月月更

网络流量分析场景浅谈

穿过生命散发芬芳

后端 引航计划 网络流量分析

005云原生之Service Mesh(Istio+Envoy)

穿过生命散发芬芳

云原生 10月月更

Go dlv <autogenerate> 代码定位

非晓为骁

源码分析 Go 语言 dlv rt0_go autogenerate

在线随机抛硬币工具

入门小站

工具

Webrtc video framerate/resolution自适应

webrtc developer

WebRTC

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