BT

如何利用碎片时间提升技术认知与能力? 点击获取答案

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

| 作者 Matt Campbell 关注 0 他的粉丝 ,译者 盖磊 关注 2 他的粉丝 发布于 2018年5月9日. 估计阅读时间: 6 分钟 | GMTC大前端的下一站,PWA、Web框架、Node等最新最热的大前端话题邀你一起共同探讨。

亲爱的读者:我们最近添加了一些个人消息定制功能,您只需选择感兴趣的技术主题,即可获取重要资讯的邮件和网页通知

看新闻很累?看技术新闻更累?试试下载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许可开源,针对大多数操作系统提供了预构建的软件包,包括DebianCentOSUbuntu等。在Docker Hub上也提供了Unit的Docker容器

查看英文原文: NGINX Releases Open Source Web Server with Dynamic Configuration

评价本文

专业度
风格

您好,朋友!

您需要 注册一个InfoQ账号 或者 才能进行评论。在您完成注册后还需要进行一些设置。

获得来自InfoQ的更多体验。

告诉我们您的想法

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我
社区评论

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

讨论

登陆InfoQ,与你最关心的话题互动。


找回密码....

Follow

关注你最喜爱的话题和作者

快速浏览网站内你所感兴趣话题的精选内容。

Like

内容自由定制

选择想要阅读的主题和喜爱的作者定制自己的新闻源。

Notifications

获取更新

设置通知机制以获取内容更新对您而言是否重要

BT