写点什么

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

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

关注

评论

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

漫谈HTTP协议

架构精进之路

HTTP 七日更 28天写作

CSS实现数据统计

德育处主任

大前端 CSS小技巧 28天写作 纯CSS

数据中台:建立在数据网络效应之上的赛道

奇点云

大数据 数据中台 云原生 数据

高阶段位机房管理:3D集装箱数据中心,触发科技“火苗”的燃烧

一只数据鲸鱼

数据可视化 3D可视化 机房管理 数据中心可视化 集装箱式数据中心

Elasticsearch 批量查询 mget

escray

elastic 七日更 28天写作 死磕Elasticsearch 60天通过Elastic认证考试

音视频行业不可或缺的功能-云端录制

anyRTC开发者

音视频 WebRTC 在线教育 直播 RTC

灵雀云Kube-OVN进入CNCF沙箱,成为CNCF首个容器网络项目

York

灵雀云 Kubernetes Kube-OVN

【CSS】波纹效果

德育处主任

CSS小技巧 28天写作 纯CSS

个人隐私之老话重谈

张老蔫

28天写作

机器学习应用设计阶段的 10 个陷阱和 11 个最佳实践

机器学习

【CSS】不规则阴影

德育处主任

css3 html/css CSS小技巧 28天写作 纯CSS

阿里巴巴正式推出2021年金三银四1000道Java工程师面试题手册(含答案)

Java架构追梦

Java 阿里巴巴 面试 架构师 金三银四

你会读书吗?

xcbeyond

读书感悟 读书方式 28天写作

区块链作用之数字货币的影响

v16629866266

微服务容错时,这些技术你要立刻想到

华为云开发者联盟

微服务 线程 服务雪崩 断路器 服务降级

《论雨伞道德》- 不要和自己的良心捉迷藏

石云升

读书笔记 28天写作 雨伞道德

面对key数量多和区间查询低效问题:Hash索引趴窝,LSM树申请出场

华为云开发者联盟

数据库 数据 存储 Hash索引 LSM树

IDEA 异常退出 解决方法

任广印

IDEA

Vue 3自定义指令开发

葡萄城技术团队

【Android Tips】小厂的扫码还能怎么做?

李小四

机器学习 二维码 扫码 微信扫码

HTML5中的拖放功能

我是哪吒

html html5 程序员 面试 大前端

代码 or 指令,浅析ARM架构下的函数的调用过程

华为云开发者联盟

函数 任务栈 arm架构

AI、IoT、区块链、自主系统、下一代计算五大技术引领未来供应链发展

京东科技开发者

区块链 AI IoT 供应链

Volcano 监控设计解读,一看就懂

华为云开发者联盟

Kubernetes 云原生 监控 Volcano 计算

[高并发]高并发分布式锁架构大解密,不是所有的锁都是分布式锁!!

Geek_0o5u34

前端模拟假数据(json-server光速入门篇)

德育处主任

json 大前端 Node 28天写作 json-server

Vue3 中 v-if 和 v-show 指令实现的原理 | 源码解读

五柳

源码分析 大前端 Vue3

美国大选期间美股迎来大涨,舆情到底有何魔力?

星环科技

人工智能 大数据

甲方日常 91

句子

工作 随笔杂谈 日常

前端知识总结输出文章目录大全

梁龙先森

JavaScript 大前端 编程语言 28天写作

即构SDK新增焦点语音功能,可实现特定用户语音的聚焦

ZEGO即构

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