打开NGINX Unit世界
502 次浏览
发表于 2020-08-31 22:08

引子

我是NGINX Unit的贡献者,Unit是我非常喜欢的一个开源软件。
我将写一系列Unit的文章分享Unit的世界,相信这个优秀的软件会有非常好的前景。

NGINX Unit是什么?

NGINX Unit是一个全新的,由NGINX作者亲自设计,带领NGINX核心团队开发的纯c软件。官方的定义:Unit是一个动态的web和应用服务器。因此它的三大核心为:动态,web和应用。



Unit总体架构



后续会有专门文章分析Unit构架设计,敬请关注。

动态

动态指两部分,动态配置和应用进程的动态管理。这里只介绍动态配置,这是它最大的亮点之一。
动态配置一直是NGINX软件的缺陷,重新设计的Unit没有这个问题。
简单说,Unit已经没有配置文件。Unit提供了http API接口,所有配置的更新都通过RESTful方式操作。



应用

Unit是个多语言应用软件,它支持同时多个语言,甚至同个语言的不同版本,比如python2和python3,php5和php7。NGINX还有个问题,它不支持应用开发。是的,lua模块已经能做非常多的应用了。但是官方想支持更多主流的语言,于是有了这个设计。


web

Unit已经支持了static和proxy两个功能,还比较粗糙。相信这些核心功能未来能跟nginx一样完善。

其它

Unit已经支持TLS,HTTP/2也在计划当中。此外不得不提的是Unit支持了类似容器的名称空间(namespace)和文件系统隔离(file system isolation)。

Unit搭建文件服务器

1. 安装

> git clone git@github.com:nginx/unit.git && cd unit
> ./configure && make


2. 启动

> ./build/unitd

3. 配置

> cat << EOF > config.json
{    
    "listeners": {        
        "127.0.0.1:80": {            
            "pass": "routes"        
        }    
    },    
    "routes": [        
        {            
            "action": {                
                "share": "/var/www/"            
            }        
        }    
    ]
}
EOF

> curl -X PUT --data-binary @config.json --unix-socket control.unit.sock http://localhost/config
{
    "success": "Reconfiguration done."
}

4. 访问

> curl http://127.0.0.1:80

更多请看官方文档
下篇介绍:Unit架构设计



如果您觉得不错,就打赏支持一下吧〜
已有 0 人进行打赏
发表评论
  • SamW_NGINX

    非常好!👍,期待系列。

    2020-09-12 19:15
    0
    回复
发表者

洪志道

NGINX官方团队成员

  • 11

    文章

  • 1

    关注

  • 40

    粉丝

活动推荐
版权所有©F5 Networks,Inc.保留所有权利。京ICP备16013763号-5