Во-первых, там чёрным по белому написано «it is not intended to be deployed on production systems.»
А во-вторых, продукт надо использовать с очень большой оглядкой, ибо работает он просто как нгинх, а именно: принимает запрос, пишет его на диск, потом считывает с диска и кормит его в нижестоящий сервер, который в свою очередь снова пишет его на диск. Если кто ещё не понял, то при приёме гигабайтного файла нагрузка на жёсткий диск будет составлять 2 Гб на запись и 1 Гб на чтение.
Мы сей вопрос решили самостоятельно написанным демоном, который принимает файл, укалдывает на диск, а затем просто проксирует данные апачу. Естественно, upload progress при этом работает. А также работает приёмка файлов размером больше 4Гб. Что нгинху и апачу совсем не по зубам.
А что значит «кормит его в нижестоящий сервер»? У меня nginx и есть нижестоящий, т. е. я указал в статье, я юзаю upload module под nginx, который выдирает файл из запроса и отдает обработчику лишь информацию о файле. Как в общем правильно заменил PilgrimX182.
Приношу извинения, невнимательно читал. Не заметил про Nginx upload module. Подскажите, а проверку на суммарный объём запроса можно организовать перед приёмкой или только после? (например, для платных пользователей одно ограничение, для бесплатных — другое)
Просто классическая схема работы не позволяет оборвать соединение до того как весь запрос придёт.
Теоритически да. nginx, получая запрос, может проверить принятый заголовок content_length, правильно я понимаю? И его уже сравнивать с ограничениями. А чтобы разграничить платных и безплатных, нужна будет прослойка из php. Иначе, думаю, никак.
alexxz, в связке с Холодковским модулем upload module такого не происходит как я понимаю.
Юзаем эту связку на продакшене — несколько дней полёт нормально :)
А файлы больше 2 гигов через браузер посылать это моветон, десктопный аплоадер с докачкой для таких размеров требо.
При аплоаде больших файлов на фронтед (nginx) сервер, файл потом копируется на бэкенд (apache + php) сервера, происходит это по продолжительности дольше чем таймаут nginxa, в итоге получаем ошибку. Как актуально побороть этот недостаток? Решение не искал — лениво подхожу к делу, еще руки не добрались. Заранее спасибо.
Nginx UploadProgress Module