Comments 23
Пригодится
> надо в исходнике модуля (ngx_http_uploadprogress_module.c) в строчке 1151 исправить ngx_parse_size на ngx_parse_offset.
Отправьте plz это сообщение автору модуля.
Отправьте plz это сообщение автору модуля.
автор модуля — таинственная личность. Так и не смог найти его email.
sysoev.ru/mail.html
igor собака sysoev точка ру
igor собака sysoev точка ру
А то, что на странице, на которую вы дали ссылку — не оно?
Valery Kholodkov valery+nginx@grid.net.ru
Valery Kholodkov valery+nginx@grid.net.ru
brice+lklm@daysofwonder.com — его мыло, имя стоит вот здесь — wiki.codemongers.com/NginxModules
в избранное. пригодиться.
Спасибо автору за столь полезный топик.
Во-первых, там чёрным по белому написано «it is not intended to be deployed on production systems.»
А во-вторых, продукт надо использовать с очень большой оглядкой, ибо работает он просто как нгинх, а именно: принимает запрос, пишет его на диск, потом считывает с диска и кормит его в нижестоящий сервер, который в свою очередь снова пишет его на диск. Если кто ещё не понял, то при приёме гигабайтного файла нагрузка на жёсткий диск будет составлять 2 Гб на запись и 1 Гб на чтение.
Мы сей вопрос решили самостоятельно написанным демоном, который принимает файл, укалдывает на диск, а затем просто проксирует данные апачу. Естественно, upload progress при этом работает. А также работает приёмка файлов размером больше 4Гб. Что нгинху и апачу совсем не по зубам.
А во-вторых, продукт надо использовать с очень большой оглядкой, ибо работает он просто как нгинх, а именно: принимает запрос, пишет его на диск, потом считывает с диска и кормит его в нижестоящий сервер, который в свою очередь снова пишет его на диск. Если кто ещё не понял, то при приёме гигабайтного файла нагрузка на жёсткий диск будет составлять 2 Гб на запись и 1 Гб на чтение.
Мы сей вопрос решили самостоятельно написанным демоном, который принимает файл, укалдывает на диск, а затем просто проксирует данные апачу. Естественно, upload progress при этом работает. А также работает приёмка файлов размером больше 4Гб. Что нгинху и апачу совсем не по зубам.
А что значит «кормит его в нижестоящий сервер»? У меня nginx и есть нижестоящий, т. е. я указал в статье, я юзаю upload module под nginx, который выдирает файл из запроса и отдает обработчику лишь информацию о файле. Как в общем правильно заменил PilgrimX182.
Приношу извинения, невнимательно читал. Не заметил про Nginx upload module. Подскажите, а проверку на суммарный объём запроса можно организовать перед приёмкой или только после? (например, для платных пользователей одно ограничение, для бесплатных — другое)
Просто классическая схема работы не позволяет оборвать соединение до того как весь запрос придёт.
Просто классическая схема работы не позволяет оборвать соединение до того как весь запрос придёт.
Теоритически да. nginx, получая запрос, может проверить принятый заголовок content_length, правильно я понимаю? И его уже сравнивать с ограничениями. А чтобы разграничить платных и безплатных, нужна будет прослойка из php. Иначе, думаю, никак.
sysoev.ru/nginx/docs/http/ngx_http_core_module.html#client_max_body_size
Будет обрывать сразу. Можно сделать два аплоад локейшена типа upload_free, upload_prem с разными лимитами. Скорость аплоада по нормальному ограничивать не получится, но это особо и не требуется на обменниках.
Будет обрывать сразу. Можно сделать два аплоад локейшена типа upload_free, upload_prem с разными лимитами. Скорость аплоада по нормальному ограничивать не получится, но это особо и не требуется на обменниках.
alexxz, в связке с Холодковским модулем upload module такого не происходит как я понимаю.
Юзаем эту связку на продакшене — несколько дней полёт нормально :)
А файлы больше 2 гигов через браузер посылать это моветон, десктопный аплоадер с докачкой для таких размеров требо.
Юзаем эту связку на продакшене — несколько дней полёт нормально :)
А файлы больше 2 гигов через браузер посылать это моветон, десктопный аплоадер с докачкой для таких размеров требо.
Используем эту штуку вот уже около месяца, полет нормальный. Рекомендации лучших файлообменниководов :)
При аплоаде больших файлов на фронтед (nginx) сервер, файл потом копируется на бэкенд (apache + php) сервера, происходит это по продолжительности дольше чем таймаут nginxa, в итоге получаем ошибку. Как актуально побороть этот недостаток? Решение не искал — лениво подхожу к делу, еще руки не добрались. Заранее спасибо.
Sign up to leave a comment.
Nginx UploadProgress Module