searchusermenu
  • 发布文章
  • 消息中心
点赞
收藏
评论
分享
原创

nginx lua中的变量为什么nginx.conf中if条件内获取不到

2023-10-25 00:59:42
6
0

问题描述:

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

0条评论
0 / 1000
Mr. 油
89文章数
0粉丝数
Mr. 油
89 文章 | 0 粉丝
原创

nginx lua中的变量为什么nginx.conf中if条件内获取不到

2023-10-25 00:59:42
6
0

问题描述:

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

文章来自个人专栏
存储专栏
89 文章 | 1 订阅
0条评论
0 / 1000
请输入你的评论
0
0