在OpenResty中,通过set_by_lua指令设置的环境变量可以通过ngx.var.env获取,而通过set指令设置的环境变量则不能直接通过ngx.var.env获取。

具体来说,使用set_by_lua指令设置的环境变量可以在Lua代码中通过ngx.var.env获取,例如:

http {
    server {
        location /test {
            set_by_lua $env 'aaa';
            content_by_lua '
                ngx.say(ngx.var.env);
            ';
        }
    }
}

上述示例中,当访问/test时,会输出aaa。

而使用set指令设置的环境变量则不能直接通过ngx.var.env获取,需要使用ngx.req.set_header函数将环境变量设置为HTTP请求头的形式,然后在Lua代码中通过ngx.req.get_headers()["env"]获取,例如:

http {
    server {
        location /test {
            set $env 'bbb';
            rewrite_by_lua '
                ngx.req.set_header("env", ngx.var.env);
            ';
            content_by_lua '
                ngx.say(ngx.req.get_headers()["env"]);
            ';
        }
    }
}

上述示例中,当访问/test时,会输出bbb

openresty 中conf中用set_by_lua $env aaa 和 set $env bbb 。在lua中 通过 ngxvarenv 获取的是什么

原文地址: https://www.cveoy.top/t/topic/h8Es 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录