如何将lua变量返回到nginx变量中

如何将lua变量返回到nginx变量中,nginx,lua,openresty,Nginx,Lua,Openresty,我有一个lua脚本,它使用luaresty通过co套接字调用另一个服务。 现在我想使用这个调用中的信息在nginx中路由请求 nginx在accessbylua中包含lua脚本* 这样设置变量: if ( $blocked ) { proxy_pass http://haproxy-9001; break; } ngx.var.blocked='1' 位置中的路线如下所示: if ( $blocked ) { proxy_pass http://hapro

我有一个lua脚本,它使用luaresty通过co套接字调用另一个服务。 现在我想使用这个调用中的信息在nginx中路由请求

nginx在accessbylua中包含lua脚本* 这样设置变量:

if ( $blocked ) {
     proxy_pass   http://haproxy-9001;
     break;
}
ngx.var.blocked='1'

位置中的路线如下所示:

if ( $blocked ) {
     proxy_pass   http://haproxy-9001;
     break;
}
现在的问题是nginx没有接收到变量变化(在这个阶段)。 如果我在set_by_lua*阶段中包含lua脚本,那么变量传递可以工作,但在这个阶段我无法访问co套接字


你知道如何将变量从lua land中取出,放入access_by_lua、rewrite_by_lua或content_by_lua阶段中的nginx变量中,这样我就可以使用co套接字api进行http调用了吗?

也许你可以用该代理而不是变量来捕获位置,它在access_by_lua范围内工作
如果nginx指令由执行

显然,它在重写阶段起作用,所以您在访问阶段的更改不起作用。 只是不要用if。下面是我的一个nginx配置的代码片段:

proxy_pass $scheme://$upstream$uri$is_args$args;
只需在访问阶段设置$upstream变量,它将在内容阶段(代理程序)工作。

完整示例: