问题描述:
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中的执行流程阶段有关,如下图所示.
