ngx_lua
lua-nginx-module
1、LuaJIT
(1)C 语言编写的 Lua 即时解释器
(2)下载
wget http://luajit.org/download/LuaJIT-2.0.5.tar.gz
(3)解压
tar -zxf LuaJIT-2.0.5.tar.gz
(4)进入解压目录
cd LuaJIT-2.0.5
(5)编译、安装
make && make install
2、lua-nginx-module
(1)下载
wget https://codeload.github.com/openresty/lua-nginx-module/tar.gz/refs/tags/v0.10.22
(2)解压
tar -zxf lua-nginx-module-0.10.22.tar.gz
(3)更改目录名
mv lua-nginx-module-0.10.22 lua-nginx-module
(4)导入环境变量
export LUAJIT_LIB=/usr/local/lib
export LUAJIT_INC=/usr/local/include/luajit-2.0
(5)进入 Nginx 目录,执行以下命令
./configure --prefix=/usr/local/nginx --add-module=../lua-nginx-module
make && make install
OpenRestry
1、基于 Nginx 与 Lua 的高性能 Web 平台,内部集成大量 Lua 库、第三方模块、大多数的依赖项
2、安装
(1)CentOS 系统中添加 openresty 仓库(对于 CentOS 8 或以上版本,应将下面的 yum 都替换成 dnf)
wget https://openresty.org/package/centos/openresty.repo
sudo mv openresty.repo /etc/yum.repos.d/
(2)安装软件包
sudo yum install -y openresty
(3)安装命令行工具 resty
sudo yum install -y openresty-resty
(4)更新软件包
sudo yum check-update
指令
1、Lua 编写 Nginx 脚本的基本构建块
2、用于指定何时运行用户 Lua 代码、如何使用结果
3、执行指令的顺序
(1)以下 * 为占位后缀
(2)xxx_by_lua(无任何后缀),后面跟随 lua 指令
(3)xxx_by_lua_file,后面跟随 lua 文件
(4)xxx_by_lua_block,在 0.9.17 版本之后,替换 xxx_by_lua_file
(5)init_by_lua*:该指令在每次 Nginx 重新加载配置时执行,可以用来加载一些耗时模块,或者初始化一些全局配置
(6)init_worker_by_lua*:该指令用于启动一些定时任务,如:心跳检查、定时拉取服务器配置等
(7)set_by_lua*:该指令只做变量赋值,这个指令一次只能返回一个值,并将结果赋值给 Nginx 中指定的变量
(8)rewrite_by_lua*:该指令用于执行内部 URL 重写或外部重定向,如:伪静态化 URL 重写,本阶段在 rewrite 处理阶段的最后默认执行
(9)access_by_lua*:该指令用于访问控制,如:只允许内网 IP 访问
(10)content_by_lua*:该指令为应用最多的指令,大部分任务在这个阶段完成,其他过程一般为这个阶段准备数据,正式处理基本都在本阶段
(11)header_filter_by_lua*:该指令用于设置应答消息的头部信息
(12)body_filter_by_lua*:该指令是对响应数据进行过滤,如:截断、替换
(13)log_by_lua*:该指令用于在 log 请求处理阶段,使用 Lua 代码处理日志,但并不替换原有 log 处理
(14)balancer_by_lua*:该指令主要作用是实现上游服务器的负载均衡器算法
(15)ssl_certificate_by_*:该指令作用在 Nginx 和下游服务,开始一个 SSL 握手操作时,将允许本配置项的 Lua 代码
ngx_lua 操作 Redis
1、在 Nginx 核心系统中,Redis 是常备组件
2、Nginx 支持 3 种方法访问 Redis
(1)ngx_http_redis:提供指令少,功能单一,适合做简单缓存
(2)redis2-nginx-module:相较 HttpRedis 模块,操作更灵活,功能更强大
(3)lua-resty-redis:由 OpenResty 提供的操作 Redis 的接口库,可根据业务情况处理复杂逻辑
ngx_lua 操作 Mysql
1、在 ngx_lua 中,MySQL 有两种访问模式
(1)lua-nginx-module、lua-resty-mysql:由 OpenResty 开发的模块,在安装 OpenResty 时,默认安装,适合复杂的业务场景,同时支持存储过程的访问
(2)drizzle_nginx_module:需要单独安装,该库不在 OpenResty 中
2、lua-cjson
(1)cJSON:C 语言编写的 JSON 数据解析器
(2)将 table 或其他数据类型转为 json
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· 没有源码,如何修改代码逻辑?
· PowerShell开发游戏 · 打蜜蜂
· 在鹅厂做java开发是什么体验
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战