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

Ура!

0 ответов

Другие вопросы по тегам