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

  1. #!/bin/bash
  2. #chkconfig: 2345 89 89
  3. #Description:This is Nginx web script"
  4. PID="/usr/local/nginx/logs/nginx.pid"
  5. start(){
  6. /usr/local/nginx/sbin/nginx
  7. if [ $? -eq 0 ];then
  8. echo -en "Starting Nginx...\t\t\t["
  9. echo -en "\033[32;34mOK\033[0m"
  10. echo "]"
  11. else
  12. echo "Starting Nginx Error"
  13. fi
  14. }
  15. stop(){
  16. /usr/local/nginx/sbin/nginx -s stop
  17. if [ $? -eq 0 ];then
  18. echo -en "Stop Nginx...\t\t\t["
  19. echo -en "\033[32;34mOK\033[0m"
  20. echo "]"
  21. else
  22. echo "Stop Nginx Error"
  23. fi
  24. }
  25. status(){
  26. if [ -f $PID ];then
  27. ID=$(cat $PID)
  28. echo "Ngix($ID) is running..."
  29. else
  30. echo "Nginx is stop"
  31. fi
  32. }
  33. case $1 in
  34. start)
  35. start;;
  36. stop)
  37. stop;;
  38. restart)
  39. stop
  40. start
  41. ;;
  42. status)
  43. status;;
  44. *)
  45. echo "Usage:$0 {start|stop|restart|status}"
  46. esac

/etc/init.d/nginx

  6、验证

      vim /usr/local/nginx/conf/nginx.conf   # 配置nginx.conf

      #test.lua文件内容

      ngx.say("hello world");

  1. #1、lua指令方式
  2. #在server 中添加一个localtion
  3. location /hello {
  4. default_type 'text/plain';
  5. content_by_lua 'ngx.say("hello, lua")';
  6. }
  7.  
  8. #2、lua文件方式
  9. #在server 中添加一个localtion
  10. location /lua {
  11. default_type 'text/html';
  12. content_by_lua_file conf/lua/test.lua; #相对于nginx安装目录
  13. }

nginx.conf

      [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请求

  1. location /api/test {
  2. # access_log logs/access_api.log main;
  3. set $cmd "python /home/work/opbin/test.py $arg_username $arg_fullname $arg_email $arg_phone 2>&1";
  4. content_by_lua '
  5. ngx.header.content_type = "text/plain";
  6. local cmd = ngx.var.cmd;
  7. local exec = io.popen(cmd);
  8. local log = exec:read("*all");
  9. exec:close();
  10. ngx.print(log);
  11. ';
  12. }

nginx.conf 配置lua接收get请求

  1. #1、在浏览器中访问
  2. http://1.1.1.3/api/test?username=jack4&fullname=JACK4&email=jack4@yiducloud.cn&phone=18765452444
  3.  
  4. #2、返回结果
  5. ["/home/work/opbin/test.py", "jack4", "JACK4", "jack4@yiducloud.cn", ""]

测试lua接收get请求

  1. local secondfile = io.popen("ifconfig")
  2. if nil == secondfile then
  3. print("open file for ipconfig fail")
  4. end
  5.  
  6. print("\n======commond ipconfig result:")
  7.  
  8. local content = secondfile:read("*a")
  9. print(content)
  10.  
  11. secondfile:close()
  12.  
  13. # lua test.lua

test.lua 执行系统命令

  2、lua配置post请求

1111111111111111111111

11: Nginx安装lua支持的更多相关文章

  1. Nginx安装lua支持

    Nginx安装lua支持 需要LuaJIT-2.0.4.tar.gz,ngx_devel_kit,lua-nginx-module 1.下载安装LuaJIT-2.0.4.tar.gz wget -c ...

  2. nginx安装lua模块实现高并发

    nginx安装lua扩展模块 1.下载安装LuaJIT-2.0.4.tar.gz wget -c http://luajit.org/download/LuaJIT-2.0.4.tar.gz tar ...

  3. Nginx安装及支持https代理配置和禁用TSLv1.0、TSLv1.1配置

    Linux安装Nginx Nginx安装及支持https代理配置和禁用TSLv1.0.TSLv1.1配置. 下载安装包 [root@localhost ~]# wget http://nginx.or ...

  4. nginx安装部署(支持https)

    1      安装环境准备 1.1   准备环境清单 以下是基本环境清单列表: 软件名称 版本号 说明信息 Linux CentOS 6.7 部署机器只需为Linux系统即可,无严格要求 1.2   ...

  5. Let's Encrypt: 为CentOS/RHEL 7下的nginx安装https支持-具体案例

    环境说明: centos 7 nginx 1.10.2 前期准备 软件安装 yum install -y epel-release yum install -y certbot 创建目录及链接 方法1 ...

  6. nginx 安装第三方模块(lua)并热升级

    需求: nginx上将特定请求拒绝,并返回特定值. 解决办法: 使用lua脚本,实现效果. 操作步骤: 安装Luajit环境 重新编译nginx(目标机器上nginx -V 配置一致,并新增两个模块n ...

  7. Nginx安装以及配置

    安装编译工具及库文件 1 yum -y install make zlib zlib-devel gcc-c++ libtool openssl openssl-devel 安装 PCRE 下载 PC ...

  8. 给lnmp一键包中的nginx安装openresty的lua扩展

    lnmp一键包(https://lnmp.org)本人在使用之后发现确实好用,能帮助我们快速搭建起lnmp.lamp和lnmpa的web生产环境,因此推荐大家可以多试试.但有的朋友可能需要使用open ...

  9. Nginx安装配置|Nginx反向代理|Nginx支持HTTPS|Nginx重定向

    Nginx安装配置 可以直接看到最下面的HTTPS. Nginx安装 我的系统如下: No LSB modules are available. Distributor ID: Ubuntu Desc ...

随机推荐

  1. JS--理解call、apply和bind

    call.apply和bind call,apply是Function原型中的方法,它们的作用一样,区别在于传入参数的方式不同. call(thisArg, arg1, arg2...) 传入的参数不 ...

  2. GCC 用户态&内核态 Makefile

    转了一圈,今天再次回到C 网上一篇博文,个人感觉良心作品,故而拿来重新实现一遍,原作者原文有问题,我这里把他打通了 一.GCC Makefile //hello.c #include <stdi ...

  3. iOSOpenDev安装使用

    下载:http://iosopendev.com/download/ 选择“iOSOpenDev 1.6-2 Installer” 出错解决方法 https://www.jianshu.com/p/2 ...

  4. Asp.net Core认证和授权:Cookie认证

    关于asp.net core 的文章,博客园已经有很多大牛写过了. 这里我只是记录下自己在学习中的点滴和一些不懂的地方 Cookie一般是用户网站授权,当用户访问需要授权(authorization) ...

  5. SQLAllocHandle

    函数定义: 顾名思义,该函数就是用来分配句柄的,句柄类型参考参数详解. SQLRETURN SQLAllocHandle( SQLSMALLINT     HandleType, SQLHANDLE  ...

  6. hdu5294 网络流+dijskstr

    题意:给你n个墓室,m条路径,一个人在1号墓室(起点),另一个人在n号墓室(终点),起点的那个人只有通过最短路径才能追上终点的那个人,而终点的那个人能切断任意路径. 第一问——终点那人要使起点那人不能 ...

  7. Mysql Federated For Windows

    [1]windows环境下打开federated (1)关闭.命令:mysql> net stop mysql (2)添加federated字段.在my.ini文件中添加一个字段,注意位于[my ...

  8. QNetworkAccessManager

    [1]头文件 想要利用QNetworkAccessManager类,必须在pro文件中添加对应库network,如下: QT += network 如果利用的VS + QT开发环境,请参考随笔< ...

  9. 网易新网 spider

    # -*- coding: utf-8 -*- import os import sys import urllib.request import requests import re from lx ...

  10. java设计模式之动态代理的概述和实现

    概述 1.代理:本来应该自己做的事情,请了别人来做,被请的人就是代理对象. 举例:春节回家买票让人代买 2.在Java中java.lang.reflect包下提供了一个Proxy类和一个Invocat ...