将access_by_lua与ngx.exec组合到(命名)位置

时间:2016-12-05 14:09:12

标签: nginx lua

我希望以一种方式更改现有的nginx配置,我可以完全“屏蔽”配置,并在某个cookie可用时将所有内容代理到上游(隐藏某个服务器)。

这不仅包括一些location指令,而且基本上包括每个位置指令(而不是设置或映射变量并更新n-location的try_files等)。

我的基本想法是使用 lua 并跳转到Rewrite / Access阶段,如下所示:

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;
}

但这导致ERR带有重写或内部重定向周期,同时重定向到命名位置“@ngxbackend”,因为在内部重定向之后,由于access_by_lua_block,可能永远不会到达命名位置。

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

0 个答案:

没有答案