我希望以一种方式更改现有的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,可能永远不会到达命名位置。
我可以通过使用变量和进一步的条件检查来解决这个问题吗?