写点什么

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

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

关注

评论

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

Mybatis如何执行批量操作

编程江湖

mybatis

大数据开发之Hadoop高频面试题

@零度

大数据 hadoop

4种高速安全混合云解决方案,助力您的云迁移之旅!

亚马逊云科技 (Amazon Web Services)

计算

🍃【Spring专题】「技术原理」为大家介绍一下Spring中的Ant路径匹配工具组件AntPathMatcher

码界西柚

spring 1月月更 SpringFramework AntPathMatcher

通过 Amazon CloudWatch 配合 Amazon ElastiCache for Redis 遵循监控最佳实践

亚马逊云科技 (Amazon Web Services)

计算

【Redis集群原理专题】分析一下相关的Redis服务分片技术和Hash Tag

码界西柚

redis redis cluster redis架构 1月月更

趋势:2022 年 AI 五大预测

BeeWorks

拍乐云首发音视频「分组讨论」开放能力,开启线上群聊互动新玩法

拍乐云Pano

音视频 RTC 视频会议 泛娱乐 分组讨论

中小型企业过等保困难有哪些?如何解决?

行云管家

网络安全 企业 过等保

前端开发之VUE基础面试题分享

@零度

Vue 前端开发

在线正则表达式可视化测试工具

入门小站

工具

知识中台,驱动产业智能化升级

百度大脑

人工智能

全面容器化之后,来电科技如何实现微服务治理?

阿里巴巴云原生

阿里云 微服务 云原生 实践

青藤成功举办“ATT&CK应用发展论坛”,并发布《ATT&CK框架实践指南》

青藤云安全

企业聊天APP-有什么作用,可以带来哪些便利?WorkPlus即时通讯

BeeWorks

建议收藏 | SpringBoot 元数据配置原来可以这么玩!

李尚智

spring springboot SpringBoot 2 java 编程 1月月更

无服务器应用DevOps最新实践(内附完整演讲+视频)

亚马逊云科技 (Amazon Web Services)

计算

高成长、高潜力,火线安全入选2021中国新锐技术先锋企业20强!

火线安全

使用Amazon CDK部署基于Amazon Fargate的高可用、易扩展的Airflow集群

亚马逊云科技 (Amazon Web Services)

计算

隐喻回顾会

Bruce Talk

敏捷 Agile 回顾会 Coach/Facilitate

腾讯云TDSQL在PostgreSQL领域的‘‘再次突破’’

腾讯云数据库

tdsql 国产数据库

Linux之du命令

入门小站

Linux

使用CRM系统改善客户关系的方法

低代码小观

企业管理 CRM ERP CRM系统 企业管理工具

TDengine在蓝深远望电机物联网监测预警与预测性维护平台中的应用

TDengine

数据库 大数据 tdengine 物联网

开源数据库TDSQL PG版再升级:分区表性能提升超10倍

腾讯云数据库

tdsql 国产数据库

针对jQuery的优化方法有哪些

编程江湖

jquery

增效降本开源节流,2022年技术趋势前瞻(异步编程/容器技术)

刘悦的技术博客

容器 性能 异步IO 异步削峰 成本优化

实现分区表性能提升超10倍,解密TDSQL PG版开源升级特性

腾讯云数据库

tdsql 国产数据库

Tomcat系统架构分析-Service

编程江湖

tomcat

选择“难而正确”的道路,国内VPN距离突破瓶颈还有多远?

科技热闻

理清逻辑,确保云原生时代应用开发的全生命周期安全

华为云开发者联盟

网络安全 安全 应用开发 安全防守

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