前言
我们都知道Nginx有很多的特性和好处,但是在Nginx上开发成了一个难题,Nginx模块需要用C开发,而且必须符合一系列复杂的规则,最重要的用C开发模块必须要熟悉Nginx的源代码,使得开发者对其望而生畏。为了开发人员方便,所以接下来我们要介绍一种整合了Nginx和lua的框架,那就是OpenResty,它帮我们实现了可以用lua的规范开发,实现各种业务,并且帮我们弄清楚各个模块的编译顺序。关于OpenResty,我想大家应该不再陌生,随着系统架构的不断升级、优化,OpenResty在被广泛的应用。
OpenResty简介
1、OpenResty又被称为ngx_openresty,是基于Nginx的核心Web应用程序服务器
2、OpenResty是基于Nginx和Lua的高性能Web平台,OpenResty通过汇聚各种设计精良的Nginx模块,从而将Nginx有效地变成一个强大的通用Web应用平台
3、OpenResty的目标是让Web服务直接运行在Nginx服务内部,充分利用Nginx的非堵塞I/O模型,不仅对HTTP客户端请求,甚至对远程后端DB都进行一系列的高性能响应
4、OpenResty借助于Nginx的事件驱动模型和非堵塞IO,以实现高性能的Web应用程序
5、OpenResty使我们可以借助于Nginx的异步非阻塞达到使用Lua异步并发访问后端DB等服务
6、OpenRest使用ngx.location.capture_multi极大地减少浏览器的HTTP连接数量,可以异步并发的访问后台接口
OpenResty运行原理
Nginx采用的是master-worker模型,也就是一个master进程管理多个worker进程,基本的时间处理都放在worker进程中,master进程负责全局初始化以及对worker进行的管理
OpenResty中,每个worker进程使用一个LuaVM,当请求被分配到wo