当我们准备使用 nginx 时,我们会发现互联网上提供了很多个版本的 Nginx,既有开源免费的 Nginx 也有收费版的 Nginx plus,既有免费版的 OpenResty 有收费本来 OpenResty 我们应该怎么选择呢?先来看开源免费的Nginx 和商业版 Nginx 有什么区别?开源免费的 Nginx 在 2002 年 开始开发,2004 年发布第一个版本。到了2011 年,开源版的Nginx 发布了 1.0 这个稳定版。同年 Nginx 的作者成立了一家商业公司,开始推出 Nginx plus,这个商业版的 nginx。商业版的 Nginx 在整合第三方模块上,还有运营监控以及技术支持上有很多优点,但它有个最大的缺点就是它不是开源的。所以通常在国内我们会使用 nginx.org 开源版的。
那么阿里巴巴也推出了 Tengine。Tengine 的优点就是在阿里巴巴这个生态下,他经历了非常严苛的考验。那么Tengine之所以会存在,也是因为它的很多特性领先于 Nginx 的官方版本,所以 Tengine 实际上是修改了 nginx版本的主干代码。它的框架被修改以后,Tengine 就遇到了一个问题,他没有办法跟着 Nginx 的官方版本同步的升级。所以 Tengine 的生态虽然也很丰富,也可以使用 nginx 官方版本的各种第三方模块,但是因为它的这个特性,所以我不太推荐大家使用 Tengine。
下面我们来看一下 OpenResty.
OpenResty 的作者章亦春最早也是在阿里巴巴工作,在阿里巴巴的时候,他开发了Lua 语言版本的 OpenResty,因为 Nginx 的第三方模块开发的难度相当大。而章亦春呢,他把 Nginx 非阻塞事件这样的一种框架,以 Lua 语言的方式,以同步开发的方式提供给了广大开发者。所以 OpenResty 兼具了高性能以及开发效率提升的一个特点。OpenResty 同样有开源版和商业版,我们目前多使用 openresty.org。这个站点下的开源版本,那么商业版 OpenResty。它的主要特点是技术支持相对比较好一些。虽然在互联网上大家可以发现更多的 Nginx 版本,但最主要的就是以上这五个版本。如果你没有太多的业务诉求,那么使用开源版的 Nginx 就足够了。如果你需要开发API服务器,或者去需要开发 web 防火墙,OpenResty 是一个很好的选择。