untar

Директива `untar` извлекает и обслуживает файлы прямо из tar-архива в ответ на HTTP-запросы.

Синтаксисuntar;
По умолчаниюnone
Контекстlocation
Аргументыnone

Описание

Директива untar является частью NGINX HTTP Untar Module, позволяя обслуживать статическое содержимое прямо из tar-архивов без необходимости временной распаковки на диск. Эта директива работает совместно с двумя другими директивами: untar_archive, которая указывает расположение tar-файла, и untar_file, которая указывает конкретный файл внутри tar-архива для обслуживания. Когда запрос соответствует location, определённому с помощью директивы untar, NGINX обращается к указанному tar-архиву, извлекает указанный файл и отдает его клиенту напрямую из памяти, оптимизируя производительность за счёт устранения необходимости промежуточного хранения файлов.

Процесс untar опирается на эффективный механизм кэширования, позволяющий NGINX сохранять информацию о содержимом архива для ускорения последующих обращений. Модуль в основном поддерживает обычные файлы и длинные имена файлов, работает в zero-copy режиме, что минимизирует перемещение данных и максимально увеличивает пропускную способность при отдаче файлов. Однако он ограничен обработкой HTTP-методов GET и HEAD и не поддерживает операции, такие как перечисление содержимого архива или обработка символических ссылок. Пользователям следует тщательно настраивать конфигурации NGINX, чтобы директива untar использовалась корректно и не приводила к отдаче нежелательных файлов из архивов.

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

location ~ ^/(.+?\.tar)/(.*)$ {
    untar_archive "$document_root/$1";
    untar_file "$2";
    untar;
}

Убедитесь, что tar-файл, указанный в untar_archive, доступен и имеет правильный формат.

Используйте только корректные пути и имена файлов при работе с untar_file, чтобы избежать неожиданных результатов.

Имейте в виду, что поддерживаются только определённые типы файлов; сложные структуры tar могут обрабатываться некорректно.

← Ко всем директивам