$document_root

Переменная $document_root возвращает корневой каталог текущего server- или location-блока, как определено в конфигурации NGINX.

Описание

Переменная $document_root в NGINX предоставляет путь в файловой системе к корневому каталогу, из которого для данного запроса обслуживаются файлы. Этот каталог обычно задаётся в server- или location-блоке с помощью директивы root. Её значение определяется наиболее конкретной директивой root, применимой к текущему запросу. Если директива root присутствует и в server-блоке, и в location-блоке, значение более специфичного location-блока будет иметь приоритет.

Эта переменная полезна для построения путей к файлам, особенно в сочетании с другими переменными, такими как $uri или $request_filename. Когда NGINX обрабатывает входящие запросы, он разбирает конфигурацию и назначает соответствующий корневой каталог на основе совпавшей location-директивы. Если root не задан, переменная вернёт пустую строку, что может привести к ошибкам при использовании в конфигурациях, ожидающих действительный путь.

Важно отметить, что если server-блок задаёт директиву root и не существует конкретного location-блока с директивой root, все запросы, соответствующие этому серверу, будут использовать корневой каталог из server-блока. Переменная часто используется в различных директивах NGINX, включая try_files, rewrite и alias, чтобы изменить способ обработки запросов в зависимости от определённой структуры файлов.

Пример конфига

server {
    listen 80;
    server_name example.com;
    root /var/www/example.com;

    location / {
        try_files $uri $uri/ =404;
    }
}

location /images/ {
    root /var/www/images;
}

# Example usage in a log: 
access_log /var/log/nginx/access.log "[$document_root]";

Если директива root не определена, $document_root останется пустым, что может привести к ошибкам 404 Not Found, если обращаться к нему напрямую.

Будьте осторожны при использовании $document_root внутри директивы try_files; это может привести к неожиданному поведению, если пути указаны неверно.

Путать директивы root и alias может привести к путанице, так как они обрабатывают пути по-разному.

← Ко всем переменным