如何构建支持 ngx_http_lua_module 的 ARM64 架构 Nginx Dockerfile?
摘要:一、📘 背景 ngx_http_lua_module 是 OpenResty 的核心模块之一,使 Nginx 可以直接执行 Lua 脚本,实现灵活的动态逻辑处理,例如: 动态负载均衡 请求内容过滤 动态缓存控
一、📘 背景
ngx_http_lua_module 是 OpenResty 的核心模块之一,使 Nginx 可以直接执行 Lua 脚本,实现灵活的动态逻辑处理,例如:
动态负载均衡
请求内容过滤
动态缓存控制
自定义鉴权逻辑
官方的 Nginx 镜像默认 不包含 Lua 支持,因此需要通过编译源码的方式添加。
二、🧩 编译所需组件
编译时需要以下依赖:
依赖包
说明
build-essential
基础编译工具(gcc、make 等)
libpcre3 / libpcre3-dev
Nginx 正则匹配模块依赖
zlib1g / zlib1g-dev
Nginx 压缩模块依赖
openssl / libssl-dev
HTTPS 支持
wget / git
下载源码
gettext-base
提供 envsubst 命令用于模板变量替换
额外依赖组件:
组件
说明
LuaJIT
高性能 Lua 虚拟机,Nginx 的 Lua 模块依赖它
lua-nginx-module
Nginx 与 LuaJIT 的集成模块
lua-resty-core / lua-resty-lrucache
OpenResty 常用 Lua 库(必须安装,否则报 “resty.core not found”)
三、🛠️ Dockerfile 分为两阶段
第一阶段:编译(builder)
第二阶段:运行时(runtime)
✅ 第一阶段:编译阶段(builder)
目标:在 arm64v8/ubuntu:22.04 上编译 Nginx + Lua 模块。
