使用 lua-nginx-module 可以让 Nginx 通过一些指令如 content_by_lua、content_by_lua_file 运行 Lua 脚本,非常方便。
先下载所需文件
1. 安装 luajit,官网 http://luajit.org/install.html
解压之后直接 make
make PREFIX=/usr/local/luajit
2. 下载 ngx_devel_kit(github)、nginx_lua_module(github)
3. 进入 nginx 源码目录准备 configure
如果已经安装 nginx,也可以再次 configure,但一定要涵盖上次使用的参数。
4. 导出 LUAJIT_LIB、LUAJIT_INC 环境变量
export LUAJIT_LIB=/usr/local/luajit/lib export LUAJIT_INC=/usr/local/luajit/include/luajit-2.0 LUAJIT_LIB 对应 libluajit-5.1.so 文件所在目录 LUAJIT_INC 对应 lua.h 文件所在目录
目录可能不一样,但参考 LUAJIT_LIB、LUAJIT_INC 含义。
5. 在 nginx-1.10.2 目录执行 ./configure
./configure \ --prefix=/usr/local/nginx \ --with-http_flv_module \ --with-http_gzip_static_module \ --with-http_realip_module \ --with-http_ssl_module \ --with-http_stub_status_module \ --with-http_v2_module \ --with-ipv6 \ --with-ld-opt="-ljemalloc,-Wl,-rpath,/usr/local/luajit/lib" \ --with-openssl=/opt/src/openssl-1.0.2l \ --with-pcre=/opt/src/pcre-8.40 \ --with-pcre-jit \ --add-module=/opt/src/ngx_devel_kit-0.3.0 \ --add-module=/opt/src/lua-nginx-module-0.10.8
这里用到了 ljemalloc、openssl、pcre 可以预先安装
安装 jemalloc,进入 jemalloc-4.2.1 ./configure make make install 安装 openssl pcre,或者进入源码目录安装 yum install openssl openssl-devel yum install pcre pcre-devel
6. 测试执行 lua
在 Nginx 某个 server 下增加
location /hello { content_by_lua 'ngx.say("Hello, Lua")'; }
尝试访问
[root@CentOS-58 06]# curl lua.zhengxianjun.com/hello Hello, Lua!
安装成功并且正常运行。
如果对 nginx 安装目录进行版本管理,会发现 make install 完成之后只有 nginx/sbin/nginx 文件有改动。
安装完成之后切记要执行 sbin/ngxin -t
检查语法是否正确。
一定要安装正确才能执行 sbin/ngxin -s reload
。
因为对于已经安装的 nginx,如果 ./configure 没有覆盖上一次的参数,会导致某些功能失效。
第一次 configure 时没有添加 –with-http_ssl_module 导致 nginx 提示 unknown directive “ssl”。