untar_file

Директива `untar_file` указывает файл, который должен быть извлечён из tar archive в NGINX.

Синтаксисuntar_file string;
По умолчаниюnone
Контекстhttp, server, location
Аргументы1

Описание

Директива untar_file используется совместно с директивой untar_archive для упрощения извлечения и отдачи статического содержимого непосредственно из tar archives. Основная функция этой директивы — указать путь к файлу, который должен быть извлечён из tar archive, определённого директивой untar_archive.

В контексте NGINX эта директива использует complex values, позволяя динамически разрешать имя файла, которое может формироваться на основе запросов клиента или других переменных. Такая гибкость делает её подходящей для сценариев, где несколько файлов могут находиться в одном архиве, а выбор файла определяется входящим запросом. Как только файл указан, соответствующий архив читается, и требуемое содержимое отдается клиенту напрямую без создания временных файлов, что оптимизирует производительность за счёт использования zero-copy методов.

Директива untar_file бесшовно работает в указанных контекстах (http, server, location), позволяя разработчикам настраивать её в соответствии со структурой сервера и архитектурой приложения. Важно, чтобы untar_archive была определена до untar_file, иначе возникнет ошибка, указывающая на то, что указанный архив не найден или недоступен.

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

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

Убедитесь, что untar_archive определён до untar_file, иначе не удастся найти архив.

Директива поддерживает только запросы GET и HEAD, поэтому другие методы не будут работать.

Остерегайтесь обхода путей к файлам в значениях, введённых пользователями, поскольку это может привести к уязвимостям безопасности.

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