在 Openresty/Lua 和 ngx.ctx 中的块之间传递变量

Passing variable between blocks in Openresty/Lua with ngx.ctx

试图在两个 lua 块之间传递变量。据说,这应该与 ngx.ctx 一起使用,如下所示:

header_filter_by_lua_block  {
ngx.ctx.myvar = ngx.header["X-fetch"];
}

access_by_lua_block  {
ngx.header["X-send"] = ngx.ctx.myvar;
}

但事实并非如此。怎么了?

P.S。在一个块中对两者进行测试确实有效(基本上复制现有的 header,但这只是为了说明)

header_filter_by_lua_block  {
ngx.ctx.myvar = ngx.header["X-fetch"];
ngx.header["X-send"] = ngx.ctx.myvar;
}

那是因为 access_by_lua_blockheader_filter_by_lua_block 之前运行。

看看https://openresty-reference.readthedocs.io/en/latest/Directives/