vars不工作(rewrite_by_lua_block之后)

见下方的代码块:

set $RUN_VERSION 'current';
rewrite_by_lua_block {
    ....
    ngx.var.RUN_VERSION = 'new'
}
echo $RUN_VERSION;
--------------------
访问服务器:new
看起来可以工作。

========================================================

set $RUN_VERSION 'current';
rewrite_by_lua_block {
    ....
    ngx.var.RUN_VERSION = 'new'
}
echo $RUN_VERSION;

if ($RUN_VERSION = "new"){
    echo "11111";
}
if ($RUN_VERSION = "current"){
    echo "22222";
}
--------------------
访问服务器:22222

第二种情况中的问题: 1. echo $RUN_VERSION; 什么也没显示。 2. 应该显示11111。

点赞
用户4984564
用户4984564

最简单的修复方法是在您的 nginx 配置中启用 rewrite_by_lua_no_postpone

我猜默认情况下禁用此选项有些原因(也许是性能方面的考虑?)。

2019-09-25 09:08:42