access_deny_status
Директива access_deny_status задаёт HTTP-код состояния, возвращаемый при отказе в доступе по правилам контроля доступа.
Описание
Директива access_deny_status используется в модуле расширенного контроля доступа NGINX для указания конкретного HTTP-кода состояния, который должен возвращаться при срабатывании правила deny. По умолчанию этот код установлен в 403, что означает, что сервер понимает запрос, но отказывается его авторизовать. Тем не менее, эта директива позволяет администраторам настраивать код ответа, давая гибкость в конфигурировании подходящих ответов в зависимости от логики приложения или требований.
Для использования директивы access_deny_status её можно разместить в контекстах http, server или location. Это означает, что она может задавать статус ответа на глобальном уровне, для конкретного server-блока или даже более узко — внутри location-блока. Когда срабатывает правило deny, NGINX проверяет настроенный код отказа и возвращает его клиенту вместо значения по умолчанию 403, что позволяет более точно сообщить о причине (например, использовать 404 для «не найдено» или 401 для неавторизованного доступа).
Важно помнить, что если применяются несколько правил контроля доступа, то сработает первое совпавшее правило deny и вернёт ответ с настроенным кодом состояния. Такое поведение подчёркивает необходимость тщательной структуры правил для достижения ожидаемого порядка обработки.
Пример конфига
server {
listen 80;
server_name example.com;
location /restricted {
access_deny_status 404;
access deny $var1;
}
}Убедитесь, что access_deny_status размещён в соответствующем контексте (http, server, location); в противном случае он может не иметь эффекта.
Изменение кода состояния может повлиять на обработку ответов на стороне клиента, поэтому тщательно тестируйте, чтобы обеспечить корректное поведение.
Будьте внимательны с конфликтующими правилами доступа, которые могут привести к неожиданным результатам или к переопределению ответов.