欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

如何在nginx中配置使用lua模块

程序员文章站 2022-07-02 10:00:31
...

一、前言

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中配置使用lua模块

 最后使用./nginx -V可以看到已经加入lua模块了

如何在nginx中配置使用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即可表示无问题。

如何在nginx中配置使用lua模块

 到此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 输出响应头

可能不全,更多请自行查阅资料。

 

 

相关标签: nginx lua