问题描述:
location中使用rewrite_by_lua来导入lua脚本,if条件语句拿不到变量的值
问题举例:
nginx.conf
#匹配下载请求前缀, 进行token鉴权
location ~ /purge(/.*) {
set $objtest '';
rewrite_by_lua_file /etc/nginx/lua_code/test.lua;
#可以显示123
echo $objtest;
//if中objtest还是空的,显示fail
if ( $objtest = ""){
echo "fail";
}
#可以显示123
echo $objtest;
test.lua
ngx.var.objtest = "123"
问题原因:
nginx中的if会在rewrite_by_lua之前运行,所以if中的变量不能使用rewrite_by_lua_file中处理过的,这个和lua在nginx中的执行流程阶段有关,如下图所示.