Nginx 支持 Lua 需要安装 lua-nginx-module 模块,一般常用有 2 种方法:
1、编译 Nginx 的时候带上 lua-nginx-module 模块一起编译
2、使用 OpenResty: Nginx + 一些模块,默认启用了 Lua 支持
OpenResty
OpenResty 的安装很方便,Mac 里使用 brew 安装,对于一些常见的 Linux 发行版本,OpenResty® 提供
官方预编译包,CentOS 使用 yum,Ubuntu 使用 apt-get,具体请参考
https://openresty.org/cn/installation.html,以下以 Mac 和 CentOS 7 中安装 OpenResty
为例。
Mac 使用 OpenResty
一、终端执行 brew install homebrew/nginx/openresty 把 OpenResty 安装到
/usr/local/Cellar/openresty/
二、终端执行 openresty -V 可以从输出信息中发现 Nginx 的配置文件为
/usr/local/etc/openresty/nginx.conf
三、启动 Nginx,2 种启动方式都可以
sudo openresty (openresty 其实就是 nginx 的软连接)
sudo nginx (把 /usr/local/Cellar/openresty/1.11.2.5/nginx/sbin 添加到 PATH
里,注意不同版本时的路径不同)
查看是否启动了 nginx: ps -ef | grep nginx
四、测试是否支持 Lua
1、/usr/local/etc/openresty/nginx.conf 中添加
location /lua { default_type 'text/html'; content_by_lua 'ngx.say("hello world");'; }
2、nginx -t 测试配置没问题,然后 nginx -s reload 重新加载配置 (nginx -s stop 关闭 Nginx)
3、curl http://localhost/lua 输出 hello world 则说明 Nginx 支持 Lua
CentOS 7 使用 OpenResty
1、终端执行下面 3 条命令把 OpenResty 安装到 /usr/local/openresty
sudo yum install yum-utils sudo yum-config-manager --add-repo https://openresty.org/package/centos/openresty.repo sudo yum install openresty
2、Nginx 的配置文件位于 /usr/local/openresty/nginx/conf/nginx.conf (openresty -V
中没有指定)
3、启动 Nginx,2 种启动方式都可以
sudo openresty
sudo nginx/
4、查看是否启动了 nginx: ps -ef | grep nginx
4、测试是否支持 Lua: 参考上面的方法
编译 Nginx + Lua
编译 Nginx 需要先准备好下面的这些工具,如果不确定是否已安装,可以在编译的时候根据出现的错误提示再进行安装:
yum install -y gcc g++ gcc-c++
yum -y install zlib zlib-devel openssl openssl–devel pcre pcre-devel
Nginx 支持 Lua 需要依赖
LuaJIT-2.0.4.tar.gz,ngx_devel_kit,lua-nginx-module,下面介绍具体的编译过程 (都下载到 /root
目录)
1、下载安装 LuaJIT-2.0.4.tar.gz
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 # 注意ngx_devel_kit和lua-nginx-module 以实际解压路径为准 ./configure --add-module=/root/ngx_devel_kit-0.3.0 --add-module=/root/lua-nginx-module-0.10.8 make -j2 make install
5、支持 Nginx 被安装到了 /usr/local/nginx,配置文件为 /usr/local/nginx/conf/nginx.conf
6、验证
将 nginx 做成命令: ln -s /usr/local/nginx/sbin/nginx /usr/bin/nginx
/usr/local/nginx/conf/nginx.conf 中添加 Lua 测试代码
location /lua { default_type 'text/html'; content_by_lua 'ngx.say("hello world");'; }
启动 Nginx: sudo nginx
curl http://localhost/lua 输出 hello world 则说明 Nginx 支持 Lua。