Nginx 当通过_lua与ngx.exec组合访问_到(命名)位置时,避免重定向循环

Nginx 当通过_lua与ngx.exec组合访问_到(命名)位置时,避免重定向循环,nginx,lua,Nginx,Lua,我想改变现有的nginx配置,当某个cookie可用时(隐藏某个服务器),我可以完全“屏蔽”配置并将所有内容代理到上游 这不仅包括一些location指令,基本上还包括每个location指令(与设置或映射变量和更新n-location的try\u文件等相反) 我的基本想法是使用lua并跳入重写/访问阶段,如下所示: access_by_lua_block { # proceed as usual if our cookie is not detected if ngx.var.cook

我想改变现有的nginx配置,当某个cookie可用时(隐藏某个服务器),我可以完全“屏蔽”配置并将所有内容代理到上游

这不仅包括一些
location
指令,基本上还包括每个location指令(与设置或映射变量和更新n-location的try\u文件等相反)

我的基本想法是使用lua并跳入重写/访问阶段,如下所示:

access_by_lua_block {
  # proceed as usual if our cookie is not detected
  if ngx.var.cookie_demo ~= nil and string.len(ngx.var.cookie_demo) ~= 32 then
    return
  end
  # proxy and return w/out further processing
  ngx.exec("@ngxbackend")
  return ngx.exit(ngx.HTTP_OK)
}

# proxy upstream
location @ngxbackend {
  include /etc/nginx/proxy_params_demo;
  proxy_pass https://demo-upstreams;
}
但这会导致重写或内部重定向循环出错,同时重定向到命名位置“@ngxbackend”,因为命名位置可能永远无法到达,因为在内部重定向后,会出现“由lua访问”块

我可以通过使用变量和进一步的条件检查来解决这个问题吗