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