LNMP 架构——Nginx 介绍

Nginx(“engine x”) 是一款轻量级的 Web
服务器 / 反向代理服务器及电子邮件 (IMAP/POP3) 代理服务器,并在一个 BSD-like
协议下发行。其特点是占有内存少,并发能力强,事实上 nginx 的并发能力确实在同类型的网页服务器中表现较好,中国大陆使用 nginx 网站用户有: 百度、新浪、网易、腾讯、
淘宝等。


Nginx 应用场景:

web 服务器、反向代理、负载均衡


Nginx 分支

淘宝基于 Nginx 开发的 Tengine,使用上和 Nginx 一致,服务名,配置文件名都一样,和 Nginx 的最大区别在于 Tengine 增加了一些定制化模块,在安全限速方面表现突出,另外它支持对 js,css 合并。

Nginx 核心 +lua 相关的组件和模块组成了一个支持 lua 的高性能 web 容器 openresty,参考 http://jinnianshilongnian.iteye.com/blog/2280928


OpenResty

OpenResty 是一个基于 Nginx 与 Lua 的高性能 Web 平台,其内部集成了大量精良的 Lua 库、第三方模块以及大多数的依赖项。用于方便地搭建能够处理超高并发、扩展性极高的动态 Web 应用、Web 服务和动态网关。
OpenResty 通过汇聚各种设计精良的 Nginx 模块(主要由 OpenResty 团队自主开发),从而将 Nginx 有效地变成一个强大的通用 Web 应用平台。这样,Web 开发人员和系统工程师可以使用 Lua 脚本语言调动 Nginx 支持的各种 C 以及 Lua 模块,快速构造出足以胜任 10K 乃至 1000K 以上单机并发连接的高性能 Web 应用系统。
OpenResty® 的目标是让你的 Web 服务直接跑在 Nginx 服务内部,充分利用 Nginx 的非阻塞 I/O 模型,不仅仅对 HTTP 客户端请求, 甚至于对远程后端诸如 MySQL、PostgreSQL、Memcached 以及 Redis 等都进行一致的高性能响应。
本节摘自: http://openresty.org/cn/


Lua

Lua 是一种轻量级、可嵌入式的脚本语言,这样可以非常容易的嵌入到其他语言中使用。另外 Lua 提供了协程并发,即以同步调用的方式进行异步执行,从而实现并发,比起回调机制的并发来说代码更容易编写和理解,排查问题也会容易。Lua 还提供了闭包机制,函数可以作为 First Class Value 进行参数传递,另外其实现了标记清除垃圾收集。
因为 Lua 的小巧轻量级,可以在 Nginx 中嵌入 Lua VM,请求的时候创建一个 VM,请求结束的时候回收 VM。


ngx_lua

ngx_lua 是 Nginx 的一个模块,将 Lua 嵌入到 Nginx 中,从而可以使用 Lua 来编写脚本,这样就可以使用 Lua 编写应用脚本,部署到 Nginx 中运行,即 Nginx 变成了一个 Web 容器;这样开发人员就可以使用 Lua 语言开发高性能 Web 应用了。
ngx_lua 提供了与 Nginx 交互的很多的 API(API 就是操作系统留给应用程序的一个调用接口,应用程序通过调用操作系统的 API 而使操作系统去执行应用程序的命令 / 动作。),对于开发人员来说只需要学习这些 API 就可以进行功能开发,而对于开发 web 应用来说,如果接触过 Servlet 的话,其开发和 Servlet 类似,无外乎就是知道接收请求、参数解析、功能处理、返回响应这几步的 API 是什么样子的。