简介
Openresty提供lua-nginx模块,提供了大量lua模块以扩展Nginx的各种功能。Nginx官方版本默认没有集成lua-nginx模块,可通过手动编译的方式集成该模块。
下载源代码
本文采用源码编译Nginx和ngx_lua模块,具体包括5个组件:Nginx、luajit、ngx_devel_kit、lua-nginx模块、lua-resty-core和lua-resty-lrucache。
组件名 | 描述 | 版本 | 下载链接 |
---|---|---|---|
Nginx | Nginx官方库 | 1.25.3 | https://github.com/nginx/nginx/releases/tag/release-1.25.3 |
luajit | lua即时编译器 | v2.1-20231117 | https://github.com/openresty/luajit2/releases/tag/v2.1-20231117 |
ngx_devel_kit | lua-nginx依赖的开发包 | v0.3.3 | https://github.com/vision5/ngx_devel_kit/releases/tag/v0.3.3 |
lua-nginx | lua-nginx框架 | v0.10.25 | https://github.com/openresty/lua-nginx-module/releases/tag/v0.10.25 |
lua-resty-core | lua-nginx核心模块 | v0.1.27 | https://github.com/openresty/lua-resty-core/releases/tag/v0.1.27 |
lua-resty-lrucache | lua-nginx lru缓存模块 | v0.13 | https://github.com/openresty/lua-resty-lrucache/releases/tag/v0.13 |
在编译环境创建/opt/nginx/modules目录,将上述组件的tar.gz下载到/opt/nginx/modules目录下解压。
编译luajit
cd modules/luajit2-2.1-20231117/
make -j 4 && make install PREFIX=/opt/nginx/luajit2-2.1
编译&安装nginx
# 编译nginx
cd ../nginx-release-1.25.3
export LUAJIT_LIB=/opt/nginx/luajit2-2.1/lib
export LUAJIT_INC=/opt/nginx/luajit2-2.1/include/luajit-2.1
auto/configure --prefix=/usr/local/nginx-1.25.3 \
--with-ld-opt="-lpcre -Wl,-rpath,/opt/nginx/luajit2-2.1/lib" \
--with-http_v2_module \
--add-module=/opt/nginx/modules/ngx_devel_kit-0.3.3 \
--add-module=/opt/nginx/modules/lua-nginx-module-0.10.25
make -j4 && make install
# 安装lua-resty-core和lua-resty-lrucache模块
cd ../lua-resty-core-0.1.27
make install PREFIX=/opt/nginx
cd ../lua-resty-lrucache-0.13
make install PREFIX=/opt/nginx
测试ngx_lua基本功能
cd到nginx的安装目录/usr/local/nginx-1.25.3/下,修改conf/nginx.conf
在http全局配置增加一行 lua_package_path “/opt/nginx/lib/lua/?.lua;;”;配置,引用lua-resty-core和lua-resty-lrucache模块。
然后在server 80配置下增加测试location /test_lua:
location /test_lua {
content_by_lua_block {
ngx.say("hello nginx lua")
}
}
配置如下图所示:
执行sbin/nginx启动nginx进程,然后执行curl localhost:80/test_lua访问。输出"hello nginx lua",说明lua-nginx模块已加载成功。
参考文档
https://github.com/openresty/lua-nginx-module