$request_filename

Переменная $request_filename содержит полный путь к файлу, запрошенному клиентом. — NGINX Core (HTTP)

$request_filename NGINX Core (HTTP)

Описание

Переменная $request_filename в NGINX устанавливается во время обработки запроса и предоставляет полный путь в файловой системе к запрашиваемому ресурсу. Она формируется на основе URI запроса и директив root или alias, указанных в конфигурации. Когда выполняется запрос, NGINX объединяет путь root, определённый в соответствующем контексте, с URI, в результате чего получается абсолютный путь на сервере, где находится запрашиваемый файл или каталог. Например, если сделан запрос к '/images/logo.png' и root в блоке server установлен в '/var/www/html', то $request_filename будет '/var/www/html/images/logo.png'. Эта переменная особенно полезна для модулей, которым нужен доступ к файлам, например при обработке статических файлов, при включении пользовательских форматов логирования или при реализации условной логики с помощью директивы `try_files`. $request_filename пересчитывается для каждого контекста запроса, обеспечивая точное соответствие цели текущего запроса. Типичные сценарии использования включают логирование пути запрашиваемого файла или проверку его существования перед дальнейшей обработкой с помощью `try_files` или других директив конфигурации.

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

location /images/ {
    root /var/www/html;
    if (!-f $request_filename) {
        return 404;
    }
}

Подсистема

http

Кэшируется

Нет

Контексты

http, server, location, if

Убедитесь, что root или alias правильно заданы, чтобы избежать некорректного разрешения пути.

Не путайте $request_filename с $document_root, так как последний возвращает только путь к корню и не дописывает URI запроса.

Использование $request_filename в директиве rewrite может привести к непредвиденным результатам, если не управлять рекурсией должным образом.