这是一个“有趣”的问题,而不是生产中无法克服的问题,但我一直在尝试找到一种方法来扩展其他变量中的变量。例如:在下面的代码块中,我在 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;
}
干杯!