🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
# 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](https://github.com/openresty/lua-nginx-module) ## 1 安装LuaJit ``` wget -c http://luajit.org/download/LuaJIT-2.0.2.tar.gz ``` ```bash 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/](https://github.com/simpl/ngx_devel_kit/) > lua-nginx-module下载地址 [https://github.com/chaoslawful/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 ```bash 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{}中加上如下配置: ```nginx location /lua_test1 { #执行 文本 lua 脚本 content_by_lua_file conf/lua/hello.lua; } ``` 其中hello.lua代码如下: ```lua ngx.say("HELLO LUA!!") ``` \(2\) 重启nginx服务器 ```bash sudo /usr/local/nginx/sbin/nginx -s reload ``` \(3\)客户端访问 浏览器输入 [http://192.168.2.113/lua\_test1](http://192.168.2.113/lua_test1) ### 4.2 ngx执行lua脚本内嵌代码块 \(1\) 打开/usr/local/nginx/conf/nginx.conf配置文件 在server{}中加上如下配置: ```lua 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服务器 ```bash sudo /usr/local/nginx/sbin/nginx -s reload ``` \(3\)客户端访问 浏览器输入 [http://192.168.2.113/lua\_test](http://192.168.2.113/lua_test1)2 ###