动态扩展Nginx支持Lua功能
发表于:2025-02-05 作者:千家信息网编辑
千家信息网最后更新 2025年02月05日,一、Lua说明:Lua 是一个简洁、轻量、可扩展的脚本语言,也是号称性能最高的脚本语言,用在很多需要性能的地方,比如:游戏脚本,nginx,wireshark的脚本,当你把他的源码下下来编译后,你会发
千家信息网最后更新 2025年02月05日动态扩展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安全错误
数据库的锁怎样保障安全
上海软件开发交流
网吧服务器维护
cdn加速服务器如何搭建
ilas服务器ip
辽阳苹果软件开发
明日之后劳伦斯湾服务器哪天开的
河南道达网络技术
淮安app软件开发公司
游戏服务器有必要用吗
mc空岛战争服务器
宁波fil服务器介绍
对服务器的请求已被扩展程序阻止怎么办
上海能耗管理软件开发价钱
软件开发厂家现货
重庆交友软件开发多少钱
世界卫生组织血压数据库
恭城租房软件开发
校园网络安全管理条例
k3数据库初始化
里番数据库
数据库连接失败记录
网络安全作业人员资格证
大学生网络安全防诈骗观后感
如何抓取网上数据库
杭州浩际网络技术美食买手
潍坊应用软件开发
曙光服务器管理口什么用
我的世界枪战服务器手机
学网络技术的书
access数据库界面版权