如何基于 cookie 头使用别名在 Nginx 中进行重定向?

我有一个 Web 服务器,我想像这样配置它,使用 Cloudflare 的 cookie.lua。

local key = "123"
local accessKey, err = cookie:get("access-key")
if accessKey == key then
  ngx.var.proxy = "my_remote_server"
else
  alias a static location
end

我的问题是,我认为有一个 lua 变量支持代理 _pass,这意味着 ngx.var.proxy,但是在别名到静态位置上没有相应的等效项。 所以,有没有可以解决我的问题的示例配置?谢谢你的阅读。

点赞
用户4984564
用户4984564

我不确定我是否正确理解了你的问题。

如果你想基于一个 cookie(或任何 Lua 条件,真的)重定向到另一个路由,你可以使用 ngx.exec,它会进行内部重定向; 这意味着客户端将接收到一个回复,就好像他们导航到了这个新的 URI,但它所有的过程都是在服务器端发生的,所以客户端不会被重定向,仍然在浏览器中看到旧的 URI。

我不知道这是否完全等同于使用别名,但你可以始终将它与 ngx.var.VARIABLE 和另一个具有实际 alias 指令的路由结合起来,利用 $VARIABLE

2019-11-18 16:49:48