auth_request_set
Директива `auth_request_set` устанавливает переменную на основании ответа внутреннего запроса аутентификации. — NGINX HTTP Core
Описание
Директива `auth_request_set` в NGINX используется для определения переменной, которая будет хранить результат внутреннего запроса аутентификации. Как правило, директива принимает два аргумента: имя переменной, которую нужно установить, и тот ответ, который вы хотите проверить (либо код статуса, либо конкретная переменная). В сценариях, когда внутренний запрос аутентификации проходит успешно, переменная устанавливается; если он не проходит, переменная остаётся неустановленной или сбрасывается в начальное состояние. Эта директива особенно полезна в сочетании с директивой `auth_request`, поскольку позволяет выполнять более детализированный контроль доступа, оценивая результат запросов аутентификации. Например, в зависимости от значения переменной, установленной `auth_request_set`, можно выполнять дополнительную логику, обеспечивая разные уровни доступа или обработку ошибок. Если запрос аутентификации возвращает ответ 2xx, это означает успех, тогда как любые ответы 4xx или 5xx указывают на ошибку, что позволяет настраивать реакции на попытки неавторизованного доступа. Размещение директивы `auth_request_set` гибко: её можно использовать в контекстах `http`, `server` или `location`, что обеспечивает широкую вариативность конфигурации. Кроме того, важно убедиться, что внутренние запросы аутентификации корректно сконфигурированы и доступны. Поведение добавляемой переменной и её взаимодействие с другими директивами может существенно влиять на маршрутизацию и поведение контроля доступа в NGINX, поэтому при внедрении в рабочую среду требуется тщательное тестирование.
Пример конфига
location /protected {
auth_request /auth;
auth_request_set $auth_status $upstream_status;
error_page 401 = @error401;
}
location = /auth {
internal;
proxy_pass http://backend_auth;
}Убедитесь, что внутренний URL запроса в `auth_request` правильно настроен, чтобы избежать недоступных конечных точек.
Будьте осторожны при установке переменной на основе ответа, если запрос может не вернуть корректный код ответа, поскольку это может привести к запутанному поведению при оценке контроля доступа.
Порядок определения переменных с помощью `auth_request_set` может влиять на их доступность при дальнейшей обработке; убедитесь, что они задаются до того, как на них ссылаются.