Назад | Перейти на главную страницу

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;
}

Ура!