


引子
我是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架构设计

非常好!👍,期待系列。