nginx-lua模块安装

一.简述

安装 Nginx 的 Lua 模块(通常指的是 ngx_lua 模块)可以显著增强 Nginx 的功能,使其能够执行 Lua 脚本。这使得 Nginx 可以处理更复杂的逻辑和动态内容生成。以下是详细的安装步骤,包括安装 OpenResty 或从源码编译 Nginx 和 ngx_lua 模块。

二.安装:

下载包:

复制代码
# wget http://nginx.org/download/nginx-1.8.0.tar.gz

依赖
# wget http://luajit.org/download/LuaJIT-2.0.4.tar.gz
# wget https://github.com/simpl/ngx_devel_kit/archive/v0.3.0.tar.gz
# wget https://github.com/openresty/lua-nginx-module/archive/v0.10.5.tar.gz

luaJIT:利用JIT编译技术把Lua脚本直接编译成机器码由CPU运行

复制代码
# tar fxvz LuaJIT-2.0.4.tar.gz 
# cd LuaJIT-2.0.4
# make && make install
# export LUAJIT_LIB=/usr/local/lib
# export LUAJIT_INC=/usr/local/include/luajit-2.0
# vim /etc/ld.so.conf.d/lua_luajit_lib.conf
/usr/local/lib
# ldconfig 

NDK(Nginx Development Kit)模块是一个拓展Nginx服务器核心功能的模块

第三方模块开发可以基于它来快速实现

NDK提供函数和宏处理一些基本任务,减轻第三方模块开发的代码量。

复制代码
# tar fxvz v0.3.0.tar.gz 
# tar fxvz v0.10.5.tar.gz 

nginx 安装:

复制代码
# ./configure --prefix=/vipkid/nginx_test --with-file-aio --with-ipv6 --with-http_ssl_module --with-http_spdy_module --with-http_realip_module --with-http_addition_module --with-http_xslt_module --with-http_image_filter_module --with-http_geoip_module --with-http_sub_module --with-http_dav_module --with-http_flv_module --with-http_mp4_module --with-http_gunzip_module --with-http_gzip_static_module --with-http_random_index_module --with-http_secure_link_module --with-http_degradation_module --with-http_stub_status_module --with-http_perl_module --with-mail --with-mail_ssl_module --with-pcre --with-pcre-jit --with-debug --with-cc-opt='-O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m64 -mtune=generic' --with-ld-opt=' -Wl,-E' --add-module=../ngx_devel_kit-0.3.0/ --add-module=../lua-nginx-module-0.10.5/

配置文件中加载路径:

复制代码
lua_package_path "/etc/nginx/lua/?.lua;;";     #lua依赖库,多个用";"分隔
lua_package_cpath "/usr/lib/lua/5.1/?.so;;";   #c编写的so依赖库

三. 测试验证:

复制代码
    location /lua {
        default_type 'text/html';      #默认的mime type
        content_by_lua_block {         #lua内容处理块,不应该和proxy_pass一起使用
            ngx.say("hello:",ngx.var.arg_a);   #打印内容, ngx.var.arg_a 为http的参数(a)
        }
    }

验证:
# curl http://10.136.27.175/lua?a=world
hello:world

lua_code_cache:

默认情况下开启,缓存lua代码,每次lua代码变更必须reload nginx才生效,如果在开发阶段可以通过lua_code_cache off关闭,这样调试时每次修改lua代码不需要reload nginx:

复制代码
location /lua {
    default_type 'text/html';
    lua_code_cache off;  #在配置文件中的变动(如content_by_lua_block)不会生效, 生产环境应禁止,会带来风险和性能影响
    content_by_lua_file /etc/nginx/lua/test.lua;  #content_by_lua_file类似content_by_lua_block,不过内容单独写                                                         在了一个文件中,用于代码和配置隔离
    }
相关推荐
云飞云共享云桌面6 小时前
传统工作站 vs 云飞云共享云桌面:制造业设计云桌面选型深度对比
运维·服务器·前端·网络·3d·架构·制造
楠目9 小时前
Nginx 解析漏洞利用总结
nginx·网络安全
Maynor9969 小时前
我用 Codex 给自己的网站上线了一个智能体客服:从 Dify 到服务器部署,全程实战复盘
运维·服务器
java_cj10 小时前
深入kubectl create源码:从YAML到Pod的完整链路拆解
运维·云原生·容器·kubernetes
深圳恒讯11 小时前
越南服务器BGP多线和单线有什么区别?
运维·服务器
志栋智能11 小时前
超自动化运维如何提升安全合规水平?
运维·安全·自动化
A_humble_scholar11 小时前
Linux(九) 进程管理完全指南:从入门到实战
linux·运维·chrome
江华森12 小时前
Linux 操作命令完全指南
linux·运维
源图客12 小时前
【AI向量数据库】Weaviate介绍与部署
运维·docker·容器
用什么都重名12 小时前
Git分支合并与远程服务器同步实战:保留关键配置文件
运维·服务器·git