upload_progress
Директива 'upload_progress' отслеживает прогресс загрузки файлов в NGINX, позволяя клиентам контролировать статус их загрузки.
Описание
Директива 'upload_progress' используется для включения отслеживания прогресса загрузки в NGINX путём выделения общей области памяти для хранения информации отслеживания по каждому соединению. Она особенно полезна при загрузке файлов, поскольку предоставляет клиенту статистику в реальном времени через веб-API с помощью уникальных идентификаторов. Каждый запрос на загрузку должен содержать уникальный идентификатор (либо как GET-параметр, либо в виде HTTP-заголовка), что обеспечивает точную привязку загружаемых данных при отчетности о прогрессе.
Эта директива принимает два аргумента: <zone_name>, который обозначает имя зоны общей памяти для хранения данных о прогрессе загрузки, и <zone_size>, который задаёт размер этой зоны памяти в байтах. После определения NGINX будет использовать эту зону для поддержания статистики по каждой загрузке, включая текущее состояние, оставшиеся байты, общий размер и другие важные показатели. Чтобы максимально повысить эффективность и уменьшить использование памяти, важно правильно настроить размер зоны в зависимости от ожидаемого количества одновременных загрузок.
Вместе с директивой 'track_uploads', которая включает отслеживание для POST-запросов, направленных в конкретный location, 'upload_progress' эффективно контролирует загрузки без разбора содержимого, что делает её мощным инструментом для управления загрузками в средах, где необходим отчёт о прогрессе, например в приложениях с передачей больших файлов или загрузкой видео.
Пример конфига
upload_progress uploads 1m;
Убедитесь, что размер зоны достаточен для обработки одновременных загрузок; недостаточный размер может привести к потере данных или перезаписи.
Каждый запрос на загрузку должен содержать уникальный идентификатор; в противном случае отслеживание невозможно.
При использовании с некоторыми location убедитесь, что ответы корректно настроены, чтобы избежать конфликтов с другими директивами.