Nginx - 扩展变量内的变量(字符串)

Nginx - 扩展变量内的变量(字符串)

这是一个“有趣”的问题,而不是生产中无法克服的问题,但我一直在尝试找到一种方法来扩展其他变量中的变量。例如:在下面的代码块中,我在 auth_request 的背面设置了一个上游变量。

我的 auth_request uwsgi 应用程序将尝试多种身份验证方法,并且根据 API 的可用性,如果没有当前会话,将重定向到众多登录应用程序之一。forward_to身份验证尝试后,特定的登录应用程序 URL 将作为标头返回,然后 nginx 将 302 到该 URL。

我想在该标头中提供 nginx 变量,例如,$scheme://$host$uri并让它们随重定向而扩展,但在示例中,重定向到文字字符串 https://example.com/login?referrer=$scheme://$host$uri

而不是例如扩展到 https://example.com/login?referrer=https://example.com/page

那么,您对如何实现这一目标有什么想法或建议吗?

# Authenticate requests.
auth_request        /auth/;
auth_request_set    $forward_to  $upstream_http_forward_to;
# forward_to set to https://example.com/login?referrer=$scheme://$host$uri string
error_page          401 =302 $forward_to; # Hope variables expand

# Authentication handler.
location /auth/ {
    uwsgi_pass          unix:/tmp/auth.sock;
    include             uwsgi_params;
    uwsgi_param         SCRIPT_NAME /auth;
}

干杯!

相关内容