Nginx - раскрыть переменные внутри переменной (строка)
Немного забавная проблема, а не что-то непреодолимое в производстве, однако я пытался найти способ расширить переменные внутри других переменных. Например: в следующем блоке кода я устанавливаю восходящую переменную в конце auth_request.
Мое приложение auth_request uwsgi будет пытаться использовать несколько методов аутентификации и, в зависимости от доступности API, будет перенаправлять в одно из многих приложений входа в систему, если нет текущего сеанса. Конкретный URL-адрес приложения для входа возвращается как forward_to
заголовок после попытки авторизации, а затем 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;
}
Ура!