Это скорее «забавная» проблема, чем что-то непреодолимое в производстве, однако я пытался найти способ расширить переменные внутри других переменных. Например: в следующем блоке кода я устанавливаю восходящую переменную на обратной стороне 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;
}
Ура!