Nginx_Lua的安装及环境

Nginx_Lua 介绍

ngx_lua – 把lua语言嵌入nginx中,使其支持lua来快速开发基于nginx下的业务逻辑

该模块不在nginx源码包中,需自行下载编译安装。使用lua 5.1(目前不支持lua 5.2) 或 luajit 2.0 。

添加lua支持后,开发复杂的模块,周期快,依然是100%异步非阻塞。

ngx_lua 哪些人在用:

淘宝、腾讯财经、网易财经、360、去哪儿网等

CloudFlare, CNN, Wingify, Reblaze, Turner, Broadcasting System

lua-nginx-module 主要官方代码在 :

https://github.com/openresty/lua-nginx-module

1 安装LuaJit

wget -c http://luajit.org/download/LuaJIT-2.0.2.tar.gz
tar xzvf LuaJIT-2.0.2.tar.gz
cd LuaJIT-2.0.2
make install PREFIX=/usr/local/luajit
echo "/usr/local/luajit/lib" > /etc/ld.so.conf.d/usr_local_luajit_lib.conf

#配置环境变量
export LUAJIT_LIB=/usr/local/luajit/lib
export LUAJIT_INC=/usr/local/luajit/include/luajit-2.0

2 安装ngx_devel_kit 和 lua-nginx-module

ngx-devel-kit下载地址

https://github.com/simpl/ngx_devel_kit/

lua-nginx-module下载地址

https://github.com/chaoslawful/lua-nginx-module/

tar -zxvf ngx_devel_kit-0.3.0.tar.gz

得到 ngx-devel-kit路径

/home/itcast/Project-Packages/ngx_devel_kit-0.3.0

tar -zxvf lua-nginx-module-0.10.8.tar.gz

得到 lua-nginx-module路径

/home/itcast/Project-Packages/lua-nginx-module-0.10.8

3 安装nginx

wget 'http://nginx.org/download/nginx-1.11.2.tar.gz'

tar -xzvf nginx-1.11.2.tar.gz

cd nginx-1.11.2/

./configure \
--add-module=/home/itcast/Project-Packages/ngx_devel_kit-0.3.0 \
--add-module=/home/itcast/Project-Packages/lua-nginx-module-0.10.8

make

sudo make install

4 配置第一个ngx_lua程序

4.1 ngx执行lua脚本文件

(1) 打开/usr/local/nginx/conf/nginx.conf配置文件

在server{}中加上如下配置:

      location /lua_test1 {
            #执行 文本  lua 脚本
            content_by_lua_file conf/lua/hello.lua;
      }

其中hello.lua代码如下:

ngx.say("HELLO LUA!!")

(2) 重启nginx服务器

sudo /usr/local/nginx/sbin/nginx -s reload

(3)客户端访问

浏览器输入 http://192.168.2.113/lua_test1

4.2 ngx执行lua脚本内嵌代码块

(1) 打开/usr/local/nginx/conf/nginx.conf配置文件

在server{}中加上如下配置:

        location  /lua_test2 {
            #执行内嵌 lua脚本
            content_by_lua '
                -- 设置返回的content_type头
                ngx.header.content_type = "text/plain";
                -- 回复客户端请求数据
                ngx.say("Hello World ngx_lua")
                -- 记录nginx日志
                ngx.log(ngx.ERR, "ngx lua ERR ERR ERR!!!!")
                ngx.log(ngx.NOTICE, "ngx lua NOTICE NOTICE NOTICE!!")
                ngx.log(ngx.INFO, "ngx lua INFO INFO INFO!!")
            ';
        }

(2) 重启nginx服务器

sudo /usr/local/nginx/sbin/nginx -s reload

(3)客户端访问

浏览器输入 http://192.168.2.113/lua_test2

results matching ""

    No results matching ""