# ============================================================ # Nginx Lua 基础配置示例 # ============================================================ # # 功能说明: # - lua-nginx-module 基础用法 # - init_by_lua 初始化 # - 变量和共享字典 # # Lolly 对应配置: # lolly 内置 Lua 沙箱支持,可通过配置嵌入 Lua 脚本 # 相关文档: docs/lua-nginx-module/ # ============================================================ # nginx.conf 主配置 http { # Lua 共享字典定义 # 用于跨请求共享数据 lua_shared_dict cache 10m; # 缓存字典 lua_shared_dict limits 5m; # 限流计数 lua_shared_dict sessions 10m; # 会话存储 # Lua 模块搜索路径 lua_package_path "/usr/local/nginx/lua/?.lua;;"; lua_package_cpath "/usr/local/nginx/lua/?.so;;"; # 初始化阶段(master 进程) # Lolly 对应: init 阶段执行 Lua init_by_lua_block { -- 加载全局模块 local config = require "config" -- 初始化全局变量 _G.app_version = "1.0.0" -- 预编译正则表达式 _G.patterns = { email = ngx.re.compile([[^[\w.+-]+@[\w.-]+\.[\w]+$]]), phone = ngx.re.compile([[^\d{10,15}$]]), } ngx.log(ngx.INFO, "Lua initialization complete") } # Worker 初始化 init_worker_by_lua_block { -- 启动后台定时任务 local timer = require "timer" timer.start_polling() } server { listen 80; server_name lua.example.com; location / { root /var/www/html; } } } # Lua 阶段说明: # # 1. init_by_lua: # - master 进程加载配置时执行 # - 用于全局初始化 # - 预编译正则、加载模块 # # 2. init_worker_by_lua: # - 每个 worker 进程启动时执行 # - 用于 worker 级初始化 # - 启动定时器、后台任务 # # 3. set_by_lua: # - 设置变量 # - 可用于复杂计算 # # 4. rewrite_by_lua: # - URL 重写阶段 # - 可实现复杂重写逻辑 # # 5. access_by_lua: # - 访问控制阶段 # - 认证、授权 # # 6. content_by_lua: # - 内容生成阶段 # - 动态响应生成 # # 7. header_filter_by_lua: # - 响应头处理 # - 修改响应头 # # 8. body_filter_by_lua: # - 响应体处理 # - 修改响应内容 # # 9. log_by_lua: # - 日志阶段 # - 自定义日志记录