动态扩展Nginx支持Lua功能
发表于:2025-12-02 作者:千家信息网编辑
千家信息网最后更新 2025年12月02日,一、Lua说明:Lua 是一个简洁、轻量、可扩展的脚本语言,也是号称性能最高的脚本语言,用在很多需要性能的地方,比如:游戏脚本,nginx,wireshark的脚本,当你把他的源码下下来编译后,你会发
千家信息网最后更新 2025年12月02日动态扩展Nginx支持Lua功能
一、Lua说明:
Lua 是一个简洁、轻量、可扩展的脚本语言,也是号称性能最高的脚本语言,用在很多需要性能的地方,比如:游戏脚本,nginx,wireshark的脚本,当你把他的源码下下来编译后,你会发现解释器居然不到200k,非常变态。很多应用程序使用Lua作为自己的嵌入式脚本语言,以此来实现可配置性、可扩展性。
二、实验环境:
192.168.1.194服务器(centos 6.5 final版本)
nginx版本:nginx-1.6.1
三、安装配置:
这里假定已经安装好了nginx(安装nginx比较简单,网上案例很多),下面开始动态编译扩展nginx使其支持lua脚本。
下载并安装luajit(lua即时编译器)
# wget http://luajit.org/download/LuaJIT-2.0.2.tar.gz # tar zxvf LuaJIT-2.0.2.tar.gz# cd LuaJIT-2.0.2# make # make install
下载lua-nginx-module模块和ngx_devel_kit(nginx开发工具包)到nginx的同级目录并解压
#wget https://codeload.github.com/openresty/lua-nginx-module/zip/v0.10.1 -o lua-nginx-module-0.10.1.zip#unzip lua-nginx-module-0.10.1.zip#wget -o ngx_devel_kit-0.2.18.tar.gz https://github.com/simpl/ngx_devel_kit/archive/v0.2.18.tar.gz #tar zxvf ngx_devel_kit-0.2.18.tar.gz
nginx -V可以查看nginx的版本,以及之前编译的项目。
# /usr/local/apps/nginx/sbin/nginx -Vnginx version: nginx/1.6.1built by gcc 4.4.7 20120313 (Red Hat 4.4.7-17) (GCC) TLS SNI support enabledconfigure arguments: --prefix=/usr/local/apps/nginx/ --user=nginx --group=nginx --with-http_stub_status_module --with-http_gzip_static_module --with-http_flv_module --with-http_mp4_module --with-pcre=/home/workspace/auto_deploy/software/nginx/pcre-8.30 --with-openssl=/home/workspace/auto_deploy/software/nginx/openssl-1.0.1i --add-module=../gnosek-nginx-upstream-fair-a18b409/ --add-module=../ngx_cache_purge-2.1 --with-http_ssl_module
要想nginx支持lua,有两种方法:
方法a、使用luajit即时编译器
# export LUAJIT_LIB=/usr/local/lib # export LUAJIT_INC=/usr/local/include/luajit-2.0 # ./configure --prefix=/usr/local/apps/nginx/ --user=nginx --group=nginx --with-http_stub_status_module --with-http_gzip_static_module --with-http_flv_module --with-http_mp4_module --with-pcre=/home/workspace/auto_deploy/software/nginx/pcre-8.30 --with-openssl=/home/workspace/auto_deploy/software/nginx/openssl-1.0.1i --add-module=../gnosek-nginx-upstream-fair-a18b409/ --add-module=../ngx_cache_purge-2.1 --with-http_ssl_module --add-module=../lua-nginx-module-0.10.1/ --add-module=../ngx_devel_kit-0.2.18/# make -j 4 # make install # echo '/usr/local/lib' >> /etc/ld.so.conf.d/lua.conf # ldconfig
方法b、使用lua编译器
# export LUA_LIB=/usr/lib64 # export LUA_INC=/usr/include # ./configure --prefix=/usr/local/apps/nginx/ --user=nginx --group=nginx --with-http_stub_status_module --with-http_gzip_static_module --with-http_flv_module --with-http_mp4_module --with-pcre=/home/workspace/auto_deploy/software/nginx/pcre-8.30 --with-openssl=/home/workspace/auto_deploy/software/nginx/openssl-1.0.1i --add-module=../gnosek-nginx-upstream-fair-a18b409/ --add-module=../ngx_cache_purge-2.1 --with-http_ssl_module --add-module=../lua-nginx-module-0.10.1/ --add-module=../ngx_devel_kit-0.2.18/# make -j 4 # make install
注意:让nginx支持lua,有两种方法,一是使用luajit即时编译器,二是使用lua编译器。推荐使用luajit,因为效率高。
编译安装好,nginx就可以支持lua脚本了。
再用nginx -V看一下nginx支持的模块
# /usr/local/rktsapps/nginx/sbin/nginx -Vnginx version: nginx/1.6.1built by gcc 4.4.7 20120313 (Red Hat 4.4.7-17) (GCC) TLS SNI support enabledconfigure arguments: --prefix=/usr/local/apps/nginx/ --user=nginx --group=nginx --with-http_stub_status_module --with-http_gzip_static_module --with-http_flv_module --with-http_mp4_module --with-pcre=/home/workspace/auto_deploy/software/nginx/pcre-8.30 --with-openssl=/home/workspace/auto_deploy/software/nginx/openssl-1.0.1i --add-module=../gnosek-nginx-upstream-fair-a18b409/ --add-module=../ngx_cache_purge-2.1 --with-http_ssl_module --add-module=../lua-nginx-module-0.10.1/ --add-module=../ngx_devel_kit-0.2.18/
可以看到我们新增加的两个模块,已经被编译进nginx里面去了。
四、验证配置指令和输出
修改nginx.conf配置文件,加入下面指令:
location / { content_by_lua 'ngx.say("hello world!")'; }重启nginx,用curl测试
# curl -i localhost
结果为:
HTTP/1.1 200 OK Server: nginx/1.4.1 Date: Tue, 24 Sep 2013 23:23:58 GMT Content-Type: application/octet-streamTransfer-Encoding: chunked Connection: keep-alive hello world!
五、安装遇到的问题:
错误提示:
make[1]: *** [/apps/lib/openssl-1.0.1i/.openssl/include/openssl/ssl.h] Error 2
修改nginx源代码里面的一个文件内容。
# vim nginx-1.6.1/auto/lib/openssl/conf
CORE_INCS="$CORE_INCS $OPENSSL/.openssl/include"CORE_DEPS="$CORE_DEPS $OPENSSL/.openssl/include/openssl/ssl.h"CORE_LIBS="$CORE_LIBS $OPENSSL/.openssl/lib/libssl.a"CORE_LIBS="$CORE_LIBS $OPENSSL/.openssl/lib/libcrypto.a"CORE_LIBS="$CORE_LIBS $NGX_LIBDL"
替换成
CORE_INCS="$CORE_INCS $OPENSSL/include"CORE_DEPS="$CORE_DEPS $OPENSSL/include/openssl/ssl.h"CORE_LIBS="$CORE_LIBS $OPENSSL/.openssl/lib/libssl.a"CORE_LIBS="$CORE_LIBS $OPENSSL/.openssl/lib/libcrypto.a"CORE_LIBS="$CORE_LIBS $NGX_LIBDL"
重新编译安装即可!!!
推荐阅读:
玩转 Nginx 之:使用 Lua 扩展 Nginx 功能
让Nginx支持Lua
编译
脚本
支持
编译器
方法
配置
模块
版本
语言
性能
指令
文件
装好
推荐
功能
动态
最高
简洁
两个
内容
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
搜狗号码通 本地数据库
服务器里面的图纸怎么打开
软件开发找哪个平台
软件开发招聘软件
计算机网络技术是不是网络工程
微信如何用数据库建立新表
数据库原理公式
上市网络安全公司薪酬
okr 软件开发模板
企业软件开发定制公司哪家好
眸萌网络技术
河北锦恩软件开发
小型超市库存管理数据库
服务器数据库内存怎么设置最合理
广东通用软件开发单价
代理服务器实质上是一个建设站
阳泉天创软件开发
手机游戏网络安全
创建数据库失败梯控
局域网搭建cdn服务器
河南pdu服务器电源哪个牌子好
国家安全网络安全画画
江苏政务软件开发报价
买电脑和 云服务器 哪个好
明日之后下一个服务器
img软件开发
怎么查公司服务器
华润集团网络安全
代理服务器 合法吗
闻泰服务器行业