01: Nginx安装lua支持
1.1 Nginx 使用lua脚本
注:需要LuaJIT-2.0.4.tar.gz,ngx_devel_kit,lua-nginx-module
1、Nginx安装lua支持
wget -c http://luajit.org/download/LuaJIT-2.0.4.tar.gz
tar xzvf LuaJIT-2.0.4.tar.gz
cd LuaJIT-2.0.4
make install PREFIX=/usr/local/luajit
# 注意环境变量!
export LUAJIT_LIB=/usr/local/luajit/lib
export LUAJIT_INC=/usr/local/luajit/include/luajit-2.0
2、下载解压ngx_devel_kit
wget https://github.com/simpl/ngx_devel_kit/archive/v0.3.0.tar.gz
tar -xzvf v0.3.0.tar.gz
3、下载解压lua-nginx-module
wget https://github.com/openresty/lua-nginx-module/archive/v0.10.8.tar.gz
tar -xzvf v0.10.8.tar.gz
4、下载安装nginx-1.10.3.tar.gz
wget http://nginx.org/download/nginx-1.10.3.tar.gz
tar -xzvf nginx-1.10.3.tar.gz
cd nginx-1.10.3
./configure --add-module=/opt/soft/ngx_devel_kit-0.3.0 --add-module=/opt/soft/lua-nginx-module-0.10.8
# 注1:ngx_devel_kit和lua-nginx-module以实际解压路径为准
make -j2
make install
# 注2:报错gcc需要安装,可以执行
yum install -y gcc g++ gcc-c++
依赖报错,可以执行
yum -y install zlib zlib-devel openssl openssl--devel pcre pcre-devel
5、启动nginx
ln -s /usr/local/nginx/sbin/nginx /usr/bin/nginx
/usr/local/nginx/sbin/nginx # 启动nginx
/usr/local/nginx/sbin/nginx -s stop # 关闭nginx
注:创建nginx启动脚本: /etc/init.d/nginx
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
#!/bin/bash #chkconfig: 2345 89 89 #Description:This is Nginx web script" PID="/usr/local/nginx/logs/nginx.pid" start(){ /usr/local/nginx/sbin/nginx if [ $? -eq 0 ];then echo -en "Starting Nginx...\t\t\t[" echo -en "\033[32;34mOK\033[0m" echo "]" else echo "Starting Nginx Error" fi } stop(){ /usr/local/nginx/sbin/nginx -s stop if [ $? -eq 0 ];then echo -en "Stop Nginx...\t\t\t[" echo -en "\033[32;34mOK\033[0m" echo "]" else echo "Stop Nginx Error" fi } status(){ if [ -f $PID ];then ID=$(cat $PID) echo "Ngix($ID) is running..." else echo "Nginx is stop" fi } case $1 in start) start;; stop) stop;; restart) stop start ;; status) status;; *) echo "Usage:$0 {start|stop|restart|status}" esac
6、验证
vim /usr/local/nginx/conf/nginx.conf # 配置nginx.conf
#test.lua文件内容
ngx.say("hello world");
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
#1、lua指令方式 #在server 中添加一个localtion location /hello { default_type 'text/plain'; content_by_lua 'ngx.say("hello, lua")'; } #2、lua文件方式 #在server 中添加一个localtion location /lua { default_type 'text/html'; content_by_lua_file conf/lua/test.lua; #相对于nginx安装目录 }
[root@redis nginx]# curl http://127.0.0.1/hello
hello, lua
[root@redis nginx]# curl http://127.0.0.1/lua
hello world
1.2 nginx 配置lua脚本
1、lua配置get请求
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
location /api/test { # access_log logs/access_api.log main; set $cmd "python /home/work/opbin/test.py $arg_username $arg_fullname $arg_email $arg_phone 2>&1"; content_by_lua ' ngx.header.content_type = "text/plain"; local cmd = ngx.var.cmd; local exec = io.popen(cmd); local log = exec:read("*all"); exec:close(); ngx.print(log); '; }
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
#1、在浏览器中访问 http://1.1.1.3/api/test?username=jack4&fullname=JACK4&email=jack4@yiducloud.cn&phone=18765452444 #2、返回结果 ["/home/work/opbin/test.py", "jack4", "JACK4", "jack4@yiducloud.cn", "18765452444"]
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
local secondfile = io.popen("ifconfig") if nil == secondfile then print("open file for ipconfig fail") end print("\n======commond ipconfig result:") local content = secondfile:read("*a") print(content) secondfile:close() # lua test.lua
2、lua配置post请求
1111111111111111111111
作者:学无止境
出处:https://www.cnblogs.com/xiaonq
生活不只是眼前的苟且,还有诗和远方。