lua-resty-ctxdump
存储并应用旧的 ngx.ctx,避免在 Nginx 内部重定向后被销毁。
$ opm get tokers/lua-resty-ctxdump
名称
lua-resty-ctxdump - 存储和应用 ngx.ctx,避免在 Nginx 内部重定向后被销毁。
!构建状态
状态
在大多数情况下可能已准备好投入生产,但尚未在实际环境中得到验证。请查看问题列表,如果您有任何问题,请告诉我。
概述
location /t1 {
set $ctx_ref = "";
content_by_lua_block {
local ctxdump = require "resty.ctxdump"
ngx.ctx = {
Date = "Wed May 3 15:18:04 CST 2017",
Site = "unknown"
}
ngx.var.ctx_ref = ctxdump.stash_ngx_ctx()
ngx.exec("/t2")
}
}
location /t2 {
internal;
content_by_lua_block {
local ctxdump = require "resty.ctxdump"
ngx.ctx = {
Date = "Wed May 3 15:18:04 CST 2017",
Site = "unknown"
}
ngx.ctx = ctxdump.apply_ngx_ctx(ngx.var.ctx_ref)
ngx.say("Date: " .. ngx.ctx["Date"] .. " Site: " .. ngx.ctx["Site"])
}
}
方法
stash_ngx_ctx
语法: ref = stash_ngx_ctx() <br> 阶段: init_worker_by_lua\, set_by_lua\, rewrite_by_lua\, access_by_lua\*, content_by_lua\, header_filter_by_lua\, body_filter_by_lua\, log_by_lua\, ngx.timer.\, balancer_by_lua\
引用 ngx.ctx
,返回一个锚点(由 lua-resty-ctxdump 维持的新引用)。
注意:stash_ngx_ctx
和 apply_ngx_ctx
必须成对调用,否则会导致内存泄漏!请参阅 apply_ngx_ctx.
apply_ngx_ctx
语法: old_ngx_ctx = apply_ngx_ctx(ref) <br> 阶段: init_worker_by_lua\, set_by_lua\, rewrite_by_lua\, access_by_lua\*, content_by_lua\, header_filter_by_lua\, body_filter_by_lua\, log_by_lua\, ngx.timer.\, balancer_by_lua\
使用从 stash_ngx_ctx
返回的锚点获取旧的 ngx.ctx
。之后,锚点将失效。
注意:stash_ngx_ctx
和 apply_ngx_ctx
必须成对调用,否则会导致内存泄漏!请参阅 stash_ngx_ctx.
作者
Alex Zhang(张超) zchao1995@gmail.com, UPYUN Inc.
版权和许可
该包本身是在 2-clause BSD 许可下授权的。
版权所有 (c) 2017,Alex Zhang。
本模块根据 BSD 许可条款授权。
在满足以下条件的情况下,允许以源代码和二进制形式重新分发和使用本软件,无论是否修改:
源代码的重新分发必须保留上述版权声明、此条件列表和以下免责声明。
二进制形式的重新分发必须在随分发提供的文档和/或其他材料中复制上述版权声明、此条件列表和以下免责声明。
本软件由版权持有人和贡献者“按现状”提供,任何明示或暗示的担保,包括但不限于对适销性和特定目的适用性的暗示担保均被排除在外。在任何情况下,版权持有人或贡献者均不对因使用本软件而引起的任何直接的、间接的、附带的、特殊的、惩罚性的或后果性的损害(包括但不限于替代商品或服务的采购;使用、数据或利润损失;或业务中断)负责,无论其原因如何,以及在任何责任理论下,无论是在合同、严格责任或侵权行为(包括疏忽或其他原因)的情况下,即使已告知可能发生此类损害。
作者
Alex Zhang(张超) zchao1995@gmail.com,UPYUN Inc.
许可证
2bsd
版本
-
存储并应用旧的 ngx.ctx,避免在 Nginx 内部重定向后被销毁。 2017-11-08 03:54:08