report_uploads
Директива 'report_uploads' позволяет NGINX предоставлять клиентам обновления о прогрессе загрузки в режиме реального времени во время отправки файлов.
Описание
Директива 'report_uploads' является важной функцией модуля отслеживания прогресса загрузки NGINX, которая обеспечивает механизм отчётности о прогрессе загрузки клиенту. При использовании она активирует HTTP-ответы, содержащие информацию о прогрессе текущей загрузки файла. Это полезно для веб-приложений, которым требуется обратная связь для пользователей во время загрузки файлов — например, сведения о том, какая часть файла уже загружена, сколько времени осталось и другие сопутствующие метрики.
При конфигурации директива требует один аргумент, который указывает зону общей памяти, используемую для отслеживания прогресса загрузки. Эта зона общей памяти хранит состояние каждой загрузки, включая сведения о прогрессе, ошибках и статусе завершения. Чтобы воспользоваться этой возможностью, запросы на загрузку должны содержать уникальный идентификатор, который связывает отчёты о прогрессе с соответствующими загрузками. Этот идентификатор может передаваться через HTTP GET parameter или в заголовке (X-Progress-ID).
Директива может размещаться в контекстах 'http', 'server' или 'location', что даёт гибкость в том, где может осуществляться отслеживание загрузки. Важно убедиться, что соответствующая зона общей памяти определена корректно до использования этой директивы, поскольку именно она будет использоваться для хранения данных отслеживания в процессе загрузок.
Пример конфига
http {
upload_progress my_zone 1m;
server {
location /upload {
track_uploads my_zone 30s;
report_uploads my_zone;
}
}
}Убедитесь, что зона разделяемой памяти, указанная в 'report_uploads', определена и инициализирована соответствующей директивой 'upload_progress'.
Уникальный идентификатор загрузки должен корректно передаваться с каждым запросом загрузки; в противном случае прогресс нельзя отследить.
Проверьте возможные конфликты с другими директивами, которые могут обрабатывать загрузки, чтобы обеспечить бесперебойную работу.