boxmoe_header_banner_img

Hello! 欢迎来到盒子萌!

加载中

文章导读

OpenResty lua的执行次序


avatar
零食大礼包 2025年9月19日 141
执行顺序阶段名称对应的 Lua 块(*_by_lua_block核心作用
1set 配置指令无(但 set $var value 早于所有 Lua 块)定义 Nginx 变量(如 set $forward_name ""),全局生效
2rewrite 阶段rewrite_by_lua_block1. URL 重写、路径调整(如 /api → /v1/api);2. 提前判断转发逻辑(避开后续阶段 API 限制);3. 变量赋值(如保存原始 URI)。
3access 阶段access_by_lua_block1. 权限控制(如 IP 黑白名单、Token 验证);2. 执行内部跳转(ngx.exec 允许);3. 中断请求(如 ngx.exit(403))。
4content 阶段content_by_lua_block1. 直接生成响应内容(无需上游 / 本地文件,如返回 JSON);2. 替代 Nginx 原生 proxy_pass/fastcgi_pass 处理业务逻辑。
5header_filter 阶段header_filter_by_lua_block1. 修改响应头(如添加 Cache-ControlCORS 头);2. 读取上游响应状态码(ngx.status);⚠️ 限制:禁止执行 ngx.exec/ngx.redirect 跳转
6body_filter 阶段body_filter_by_lua_block1. 修改响应体(如压缩、替换内容、过滤敏感信息);2. 分块处理大响应(如流式返回);⚠️ 限制:禁止执行 ngx.exec/ngx.redirect,仅允许修改响应内容
7log 阶段log_by_lua_block1. 记录自定义日志(如结合业务数据写入数据库 / ELK);2. 统计请求耗时、流量;⚠️ 限制:无法修改响应(响应已发送给客户端)
8balancer 阶段balancer_by_lua_block1. 自定义上游负载均衡逻辑(如加权轮询、一致性哈希);2. 仅在 proxy_pass/fastcgi_pass 时生效,用于选择上游服务器。
感谢您的支持


评论(0)

查看评论列表

暂无评论


发表评论