Lua#

Lua 模块将 Lua 编程语言集成到 Angie 的事件驱动处理模型中,允许通过 Lua 脚本扩展服务器功能。模块由两个组件组成:

安装#

安装 模块,请使用以下软件包之一:

  • Angie: angie-module-lua

  • Angie PRO: angie-pro-module-lua

功能示例#

典型的使用场景包括:

  • 聚合并处理多个 upstream 服务器的输出(如 proxy、drizzle、postgres、redis、memcached 等);

  • 在请求转发至后端之前,实现访问控制与安全逻辑;

  • 修改响应头部;

  • 从外部数据源(如 redis、memcached、mysql、postgresql 等)获取后端信息,并动态选择 upstream

  • content handler 中构建完整的 Web 应用;

  • 在 rewrite 阶段执行 URL 路由;

  • 为子请求和 location 块实现高级缓存策略。

LuaJIT 环境在性能方面堪比 C,具备高速执行和低内存占用的优势,因此在 Angie 中集成 Lua 极为高效。

加载模块#

使用 Lua 模块前需要先加载 ndk 模块。模块需在 main{} 上下文中加载,如下所示:

load_module modules/ndk_http_module.so;
load_module modules/ngx_http_lua_module.so;    # 用于 HTTP
load_module modules/ngx_stream_lua_module.so;  # 用于 Stream

内置 Lua 库#

以下第三方库会随 Lua 模块一同安装:

  1. luajit2

  2. lua_chronos

  3. lua_cjson

  4. lua-dumper

  5. lua-ffi-zlib

  6. inspect.lua

  7. lua-resty-core

  8. lua-resty-hmac

  9. lua-resty-http

  10. lua-resty-jwt

  11. lua-resty-lrucache

  12. lua-resty-openidc

  13. lua-resty-openssl

  14. lua-resty-session

  15. lua-resty-string

更多信息#

详细文档与源代码请见: