ngx_lua
模块将 Lua 整合在 NginX 中,使用 Lua coroutine per request 机制实现无缝的 I/O 复用处理。受益于 Lua 解释器的极低开销和原生 coroutine 支持,用户代码仍然能以习惯的顺序方式编写,丝毫不会感受到 NginX I/O 复用结构的存在,同时又能享受到其天然的非阻塞大并发能力和非凡的速度。借助 agentzh 在 ngx_echo
模块上的积累支持 subrequest 机制后,ngx_lua 能够整合各类 NginX 模块的功能,成为真正意义上的 Web 粘合层。
ngx_lua 基本实现原理:
- 缓存用户代码,解析配置文件时即载入用户Lua代码,将其包装为 closure factory 缓存在NginX内,以便创建供每个 coroutine 使用的 Lua closure;
- one coroutine per request,基于 closure factory 实现 coroutine 之间完全隔离 globals table,HTTP request 处理过程放在一个新创建的 Lua coroutine 内,处理结束或出错时结束该 coroutine,释放处理过程中消耗的所有资源;
- NginX 相关操作以 API 形式注入 Lua main thread 的 globals table,各个 coroutine 的 globals table 继承 自 main thread,节约了重新初始化 coroutine globals table 的开销;
- 调用注入的 NginX API 时,若涉及 I/O 则直接 yield 中断当前 coroutine,并调用 NginX 内的 subrequest 接口生成新的内部请求交给 NginX 处理,待其处理完毕后靠 NginX 事件系统重新 resume 被中断的 coroutine 继续运行用户代码。
在使用标准 Lua 5.1.4 的情况下,ngx_lua 可轻松达到上万QPS的吞吐量。对于涉及复杂运算的 Lua 代码,可以让 ngx_lua 使用 LuaJIT 而非标准 Lua 来实现性能上的极大提升。
后续 ngx_lua 将会得到持续的开发改进,力图成为好用、灵活、高效的 NginX 脚本引擎,请大家拭目以待!
分享到:
相关推荐
ngx_lua_module是一款强大的扩展模块,专为Nginx服务器设计,允许在Nginx配置文件中直接嵌入Lua脚本,极大地增强了Nginx的功能和灵活性。这个"ngx_lua_module-windows-1.1.2.0"是该模块的一个Windows版本,适应于...
ngx_lua 是一个强大的 Lua 脚本绑定模块,用于 ngx_openresty,这是一个全面的、高性能的、企业级的 Lua 开发平台,基于 Nginx。ngx_lua 允许开发者在 Nginx 的事件驱动、非阻塞 I/O 模型下编写服务器端的 Lua 应用...
在测试CPU密集型任务时,ngx_lua与传统的Nginx C模块相比,表现出较高的性能,尤其在处理高并发场景时优势明显。 总结 ngx_lua是Nginx的一个模块,它通过Lua语言和协程机制解决了传统架构并发度低、内存开销大和...
ngx_lua_waf是一个基于Nginx的Web应用防火墙,其核心是利用了Nginx的ngx_lua模块,通过Lua脚本实现灵活且强大的安全防护功能。ngx_lua_waf项目名称中的“master”通常指的是该项目的主分支或最新版本。"nearly11h...
根据提供的文件内容,这篇文档主要围绕在UPYUN云平台上使用ngx_lua模块与Nginx结合进行编程和配置的详细指南。下面将详细梳理这些知识点。 ### 标题知识点 - **ngx_lua**: 这是Nginx的一个模块,它允许Nginx执行Lua...
本文将介绍如何在CentOS 7 64位系统上配置Nginx服务器,集成ngx_lua模块以支持Web应用防火墙(WAF)防护功能。Nginx是一款轻量级、高性能的Web服务器和反向代理服务器,因其高效并发处理能力而被广泛应用于各大...
### Nginx ngx_lua 模块原理与内置函数详解 #### 概述 Nginx 是一款高性能的 HTTP 和反向代理 Web 服务器,而 ngx_lua 模块则是 Nginx 的一个强大扩展,它允许在 Nginx 中直接嵌入 Lua 脚本进行动态内容处理和请求...
lua-upstream-nginx-module, Nginx C 模块将Lua向ngx_lua公开,用于 Nginx upstreams 电子邮件名称ngx_http_lua_upstream - Nginx MODULE,用于向 Nginx upstreams公开Lua到 ngx_lua目录NAME状态概要说明函数get_...
UPYUN 是一家提供云存储和内容分发服务的公司,它们的平台支持使用 ngx_lua 进行自定义处理,从而提高服务性能和灵活性。 在"Using ngx_lua in UPYUN 2"中,我们将探讨如何利用 ngx_lua 实现 UPYUN 平台上的高效能 ...
lua-resty-websocket, 对ngx_lua模块( 和 OpenResty )的web socket支持 电子邮件名称lua-resty-websocket - ngx_lua模块的Lua web socket实现 table-内容名称状态描述概要说明模块resty.websocket.server方法新插件...
上段时间使用ngx_lua效果还真不错 lua这门语言让人耳目一新,跟一般的脚本语言如php,perl不同,lua被称为一种嵌入式的语言,当然lua也可以单独的进行编程,但如果你这么做的话,那么lua只是一片浮云,当然了,lua...
NGX_STREAM_SSL_PREREAD_MODULE 模块调研 NGX_STREAM_SSL_PREREAD_MODULE 是一个基于流媒体(Stream)实现的 SSL/TLS 协议 ClientHello 消息提取模块,主要用于提取 SNI(Server Name Indicate)或者 ALPN...
ngx_lua 是一个 NGINX 的第三方扩展模块,它能够将 Lua 代码嵌入到 NGINX 中来执行。UPYUN 的 CDN 大量使用了 NGINX 作为反向代理服务器,并开发了一系列例如流量统计、缓存调度、防盗链等相关的 C 模块,但从 2013 ...
### Bypass ngx_lua_waf SQL注入防御方法解析 #### 0x00 前言 ngx_lua_waf是一款基于ngx_lua的Web应用防火墙,以其高性能与轻量级著称。它内置了一系列针对常见攻击手段如SQL注入的防御规则。然而,在实际应用中,...
这个版本2.4.2的压缩包包含了ngx_cache_purge模块的所有源代码及相关文件,以便开发者在自己的Nginx环境中集成和使用。 Nginx是一款高性能、轻量级的Web服务器和反向代理服务器,广泛应用于互联网服务。其内置的...
### Bypass ngx_lua_waf SQL注入防御方法解析 #### 0x00 前言 ngx_lua_waf是一款基于ngx_lua的Web应用防火墙,以其高性能和轻量级著称。它内置了一系列针对常见攻击手段(如SQL注入)的防御规则。然而,任何安全...
ngx_lua_shared_dict则提供了在不同Lua VM之间共享数据的机制,适用于实现缓存和计数器等功能。 三、Lua-Nginx-Module的使用 3.1 安装与配置 安装lua-nginx-module通常涉及编译Nginx源码,并在编译时添加lua-nginx...