写点什么

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

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

关注

评论

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

道相同、谋相通、人相守:华为副总裁周跃峰分享如何与用户精英共创数字基建

脑极体

网络协议学习笔记 Day6

穿过生命散发芬芳

网络协议 4月日更

ElasticSearch

云淡风轻

elasticsearch

周转箱在仓配业务中的应用

Geek_vidmje

MySQL高可用架构:mysql+keepalived实现

AI乔治

Java MySQL 架构 高可用架构 keepalive

全面复盘B站面试时坑我最深的Java并发:JDK源码剖析

Java架构师迁哥

工行首次全面展示数十项数字人民币研发试点成果

CECBC

数字人民币

爆肝1W+字,通俗易懂的讲解下Java注解

AI乔治

Java 架构 面试 注解

答对这八个Redis的问题,说明你精通了

AI乔治

Java redis 架构 分布式 高并发

什么是低代码开发?低代码11大核心功能介绍!

优秀

低代码

开源新老兵携手打开社区大门,带大学生走近开源

DT极客

聪明人的训练(二十七)

Changing Lin

4月日更

前端工程化-webpack

chun1123

大前端 webpack

收藏!阿里P9耗时28天,总结历年亿级活动高并发系统设计手册

Java架构师迁哥

架构师必经之路!Github榜首Java代码优化:77案例+28技巧开源分享

Java架构师迁哥

Github瞬间爆火!被各大厂要求直接下架的面试题库也太全了

Java 编程 程序员 架构 面试

一枚比特币变换一台车,特斯拉与比特币还要绑定多久?

CECBC

特斯拉

强化区块链技术在数字政府、智慧城市、智能制造等领域应用

CECBC

人工智能

为什么区块链技术仍然被人们认为当成一个投机的工具?

CECBC

为打造更好移动生态:日活超1.2亿的百度知道,摊牌了

ToB行业头条

百度 百度知道

对于医疗健康行业,区块链最大的价值在哪里?

CECBC

医疗

别让心里的墙,挡住了你未来的路

小天同学

思考 认知提升 认知 4月日更

电脑护眼不权威指南,年纪轻轻眼睛就不行了?

彭宏豪95

效率 windows 4月日更 护眼

深入浅出解读SpringMVC 进阶版

AI乔治

Java spring 架构 微服务 springmvc

京东首席架构师深邃洞察:服务化+云原生+微服务

Java架构师迁哥

MySQL主从不一致情形与解决方法

AI乔治

Java MySQL 架构 主从同步

如何在 Spring/Spring Boot 中优雅地做参数校验?

JavaGuide

Java spring springboot

你公司有没有企业文化?

石云升

团队建设 28天写作 职场经验 管理经验 4月日更

Dubbo学习笔记

风翱

dubbo 4月日更

小技巧 | 帮助运营小姐姐批量修改文件名的几种方式

梁龙先森

Node 脚本 PowerShell

面试别慌!阿里专家带你从【入门+基础+进阶+项目】攻破SpringBoot

Java架构师迁哥

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