untar
Директива `untar` извлекает и обслуживает файлы прямо из tar-архива в ответ на HTTP-запросы.
Описание
Директива 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 могут обрабатываться некорректно.