如何在nginx中配置使用lua模块
一、前言
nginx的lua模块是针对nginx访问请求过程中没有后端又或者说需要在后端服务访问之前做某些控制,则此时lua脚本可以发挥其作用,由于lua的紧凑、快速以及内建协程,所以在保证高并发服务能力的同时极大地降低了业务逻辑实现成本。
二、nginx中添加安装lua模块
1、编译安装lua
wget http://luajit.org/download/LuaJIT-2.0.4.tar.gz tar xf LuaJIT-2.0.4.tar.gz cd LuaJIT-2.0.4 make PREFIX=/usr/local/luajit make install PREFIX=/usr/local/luajit
2、下载扩展模块
cd /usr/local/src/ wget https://github.com/simpl/ngx_devel_kit/archive/v0.3.0.tar.gz tar -xf v0.3.0.tar.gz wget https://github.com/openresty/lua-nginx-module/archive/v0.10.8.tar.gz tar xf v0.10.8.tar.gz
3、查看之前编译的参数
./nginx -V
nginx version: nginx/1.14.2
built by gcc 4.8.5 20150623 (Red Hat 4.8.5-39) (GCC)
configure arguments:
4、开始编译安装nginx并且添加需要的模块
//设置环境变量 export LUAJIT_LIB=/usr/local/luajit/lib export LUAJIT_INC=/usr/local/luajit/include/luajit-2.0 设置完成后记得source profile //下载nginx wget http://nginx.org/download/nginx-1.10.3.tar.gz //编译 ./configure --prefix=/usr/local/nginx --with-http_ssl_module --with-http_stub_status_module --add-module=/usr/local/src/ngx_devel_kit-0.3.0 --add-module=/usr/local/src/lua-nginx-module-0.10.8 //安装 make && make install
注意:如果出如下错误 b = hc->busy[i]代码错误,则有可能是nginx版本过高导致,可降低版本试下。
5、已经安装的nginx编译安装lua模块
1、先试用./nginx -V命令查看之前已经编译的模块
2、设置环境变量
export LUAJIT_LIB=/usr/local/luajit/lib
export LUAJIT_INC=/usr/local/luajit/include/luajit-2.0
3、进入之前编译的源码包目录
执行编译命令即可。
./configure --prefix=/usr/local/nginx --with-http_ssl_module --with-http_stub_status_module --add-module=/usr/local/src/ngx_devel_kit-0.3.0 --add-module=/usr/local/src/lua-nginx-module-0.10.8
make && make install 即可完成部署。
最后使用./nginx -V命令查看是否加入lua模块
错误解决:
error while loading shared libraries: libluajit-5.1.so.2: cannot open shared object file: No such file or directory
//如果报一下错误
则可以使用find / -name "libluajit-5.1.so.2"查找此文件所在目录
最后创建软连接
ln -s /usr/local/luajit/lib/libluajit-5.1.so.2 /lib64/
最后使用./nginx -V可以看到已经加入lua模块了
5、编写一个简单的lua脚本程序
1、在nginx.conf中加入以下代码
##在配置文件中加入以下代码
location /lua {
default_type 'text/html';
content_by_lua_file conf/lua/test.lua; #相对于nginx安装目录
}
##此处注意,这里最好新建一个location 来测试。
2、开始编写lua脚本
##执行一下命令 [aaa@qq.com conf]pwd [aaa@qq.com conf]# /usr/local/nginx-1.10.2/conf [aaa@qq.com conf]# mkdir lua && cd lua [aaa@qq.com lua]# vim test.lua ##脚本中添加内容 ngx.say("hello world");##启动nginx
/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
##使用ip/lua访问输出hello world即可表示无问题。
到此lua的模块就已经完全安装成功了,接下来就可以去学习lua的脚本语法了
6、nginx对lua脚本支持的一些个指令
set_by_lua 设置nginx变量 可以实现复杂赋值逻辑
set_by_lua_file 设置nginx变量 可以实现复杂赋值逻辑
access_by_lua 请求访问阶段处理。用于访问控制
access_by_lua_file 请求访问阶段处理。用户访问控制
content_by_lua 内容处理器。 处理接受和响应输出
content_by_lua_file 内容处理器。 处理接受和响应输出
nginx lua api
ngx.var nginx变量
ngx.req.get_headers 获取请求头
ngx.req.get_uri_args 获取url请求参数
ngx.redirect 重定向
ngx.print 输出响应内容体
ngx.say 和 ngx.print一样,但最后会输出一个换行符
ngnx.header 输出响应头
可能不全,更多请自行查阅资料。
上一篇: 朋克狗有点渗人