$document_root
Переменная $document_root возвращает корневой каталог текущего server- или location-блока, как определено в конфигурации NGINX. — NGINX Core (HTTP)
Описание
Переменная $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]";Подсистема
httpКэшируется
НетКонтексты
http, server, location, ifЕсли директива `root` не определена, $document_root останется пустым, что может привести к ошибкам `404 Not Found`, если обращаться к нему напрямую.
Будьте осторожны при использовании $document_root внутри директивы `try_files`; это может привести к неожиданному поведению, если пути указаны неверно.
Путать директивы `root` и `alias` может привести к путанице, так как они обрабатывают пути по-разному.