Pull to refresh

Comments 23

> надо в исходнике модуля (ngx_http_uploadprogress_module.c) в строчке 1151 исправить ngx_parse_size на ngx_parse_offset.

Отправьте plz это сообщение автору модуля.
автор модуля — таинственная личность. Так и не смог найти его email.
это автор самого сервера, а не модуля
А то, что на странице, на которую вы дали ссылку — не оно?

Valery Kholodkov valery+nginx@grid.net.ru
Не, это автор upload модуля, а не uploadprogress
brice+nginx@daysofwonder.com — по поводу модуля писать лучше сюда. :)
чёрт, действительно :)
да, связался уже, спасибо. На странице модулей не углядел
Спасибо автору за столь полезный топик.
Во-первых, там чёрным по белому написано «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. Иначе, думаю, никак.
sysoev.ru/nginx/docs/http/ngx_http_core_module.html#client_max_body_size
Будет обрывать сразу. Можно сделать два аплоад локейшена типа upload_free, upload_prem с разными лимитами. Скорость аплоада по нормальному ограничивать не получится, но это особо и не требуется на обменниках.
alexxz, в связке с Холодковским модулем upload module такого не происходит как я понимаю.
Юзаем эту связку на продакшене — несколько дней полёт нормально :)
А файлы больше 2 гигов через браузер посылать это моветон, десктопный аплоадер с докачкой для таких размеров требо.
Используем эту штуку вот уже около месяца, полет нормальный. Рекомендации лучших файлообменниководов :)
А где используете? Запеарь местечко ;)
Вот закончим сервис — обязательно пропиарю ;)
При аплоаде больших файлов на фронтед (nginx) сервер, файл потом копируется на бэкенд (apache + php) сервера, происходит это по продолжительности дольше чем таймаут nginxa, в итоге получаем ошибку. Как актуально побороть этот недостаток? Решение не искал — лениво подхожу к делу, еще руки не добрались. Заранее спасибо.
Sign up to leave a comment.

Articles