$request_filename

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

Описание

Переменная $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;
    }
}

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

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

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

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