使用lua-nginx-module可以把lua嵌入到nginx中,使用lua在nginx下开发一定的业务逻辑。

编译安装

首先编译安装LuaJIT。

LuaJIT使用JIT编译技术可以把Lua脚本直接编译成机器代码由CPU执行。

这里下载LuaJIT的源码。解压缩后进入源码目录:

1make install PREFIX=/usr/local/luajit

接下来下载ngx_devel_kitlua-nginx-module的源码。

这里下载安装最新的ngx_devel_kit (NDK) module,并解压缩。

NDK是一个扩展Nginx服务器功能的模块,好多第三方的模块都是基于NDK的基础上开发的。

这里下载lua-nginx-module的源码,并解压缩。

下载nginx的源码,解压缩之后进入源码目录:

 1export LUAJIT_LIB=/usr/local/luajit/lib
 2export LUAJIT_INC=/usr/local/luajit/include/luajit-2.0
 3
 4./configure \
 5    --with-http_ssl_module \
 6    --with-http_realip_module \
 7    --user=www \
 8    --group=www \
 9    --add-module=/path/to/ngx_devel_kit \
10    --add-module=/path/to/lua-nginx-module
11    
12make
13make install

启动nginx:

1echo "/usr/local/luajit/lib" > /etc/ld.so.conf.d/usr_local_luajit_lib.conf
2ldconfig
3
4systemctl start nginx

验证安装

下面简单验证一下nginx lua module的安装。 修改nginx.conf:

 1
 2
 3location = /hello { 
 4	content_by_lua ' 
 5        	 ngx.say("helloworld")
 6	        ngx.log(ngx.INFO, "HelloWorld")
 7        '; 
 8}
 9
10location = /luaversion { 
11	content_by_lua ' 
12        	if jit then 
13                	ngx.say(jit.version) 
14            	else 
15                	ngx.say(_VERSION) 
16        	end 
17        '; 
18}
19
20 
1./nginx -t
2./nginx -s reload

使用curl请求http://<hostname>/hello和http://<hostname>/luaversion确认能够输出结果

参考