Главная
» Как сделать
»
Увеличьте лимит загрузки веб-страниц в Nextcloud до более чем 2 ГБ.
Увеличьте лимит загрузки веб-страниц в Nextcloud до более чем 2 ГБ.
Если загрузка через браузер Nextcloud останавливается на отметке 2 ГБ, увеличьте лимит на каждом уровне, обрабатывающем запрос: PHP, веб-сервер или обратный прокси, а также любое используемое временное хранилище. Для целевого объема в 5 ГБ типичной конфигурации PHP-FPM и Nginx требуется upload_max_filesize = 5G, post_max_size = 6G, и client_max_body_size 5G, а также достаточно места на диске и времени для передачи.
В Nextcloud нет универсального ограничения в 2 ГБ. В текущем руководстве администратора указано, что максимальный размер загружаемого файла по умолчанию составляет 512 МБ, а ограничение ниже 2 ГБ является жестким пределом для 32-битных систем. Сервер, который останавливается ровно на 2 ГБ, скорее всего, достигает установленного лимита или сталкивается с промежуточным звеном. В приведенных ниже шагах в качестве примера используется 5 ГБ; замените этот размер на максимально необходимый вам размер файла.
Ограничение в 2 ГБ связано с Nextcloud?
Часто видимый лимит устанавливается PHP или веб-сервером, а не настройками Nextcloud. Поддерживаемый Nextcloud максимальный размер также зависит от операционной системы, файловой системы, квоты учетной записи и доступного временного дискового пространства. Клиент синхронизации для настольных компьютеров — это отдельный случай: он передает файлы небольшими фрагментами и не подпадает под те же ограничения на загрузку одного запроса, описанные здесь.
Сначала определите путь запроса. Проверьте, загружают ли пользователи файлы через браузер, WebDAV или настольный клиент, и проходит ли сайт через Nginx, Apache, балансировщик нагрузки или прокси-сервер хостинг-провайдера. Если вы не являетесь администратором сервера, отправьте администратору информацию о размере файла, способе загрузки, времени сбоя и любом коде ошибки; только он может изменять ограничения на стороне сервера.
Какие настройки PHP следует изменить?
Для PHP-FPM отредактируйте конфигурацию, используемую службой PHP-FPM, обслуживающей Nextcloud, — а не только конфигурацию командной строки PHP. В Debian или Ubuntu распространенный путь — /etc/php/8.2/fpm/php.ini; замените 8.2на установленную версию PHP. В вашем дистрибутиве или контейнере может использоваться другой путь. В руководстве по PHP указано, что post_max_sizeдолжен быть больше, чем upload_max_filesize, поэтому оставьте место для накладных расходов запроса.
Пример пути к файлу конфигурации PHP-FPM. Используйте версию PHP и путь к файлу, активные в вашем собственном сервисе Nextcloud.
Установите значения, соответствующие вашему серверу. Например, для 5 ГБ:
Пример значений PHP-FPM для целевого размера загружаемого файла 5 ГБ; значение post_max_size установлено выше, чем upload_max_filesize.
Указанные значения таймаута являются примерами, а не универсальными требованиями. Медленное соединение, загруженные серверы и загрузки, которые необходимо собрать в конце, могут потребовать больше времени. Настройки памяти PHP и ограничения ресурсов для каждого обработчика по-прежнему имеют значение: не следует автоматически устанавливать ограничение памяти для каждого обработчика PHP-FPM на несколько гигабайт. В рекомендациях Nextcloud по PHP указано, что на каждый процесс требуется не менее 512 МБ памяти; перед повышением лимитов ресурсов необходимо отслеживать состояние хоста и его пула PHP-FPM.
Сохраните файл и перезапустите соответствующую службу PHP-FPM, чтобы она прочитала новые настройки. Например, в системе, использующей PHP 8.2, служба может выглядеть так php8.2-fpm:
sudo systemctl restart php8.2-fpm
Названия сервисов могут различаться. В контейнерах обновите смонтированную конфигурацию или образ и пересоздайте PHP-контейнер в соответствии с процедурой развертывания данного контейнера.
Как увеличить лимит веб-сервера?
Для Nginx директиву body-size следует поместить в активный serverблок, а для Nextcloud — в более подходящий locationблок:
client_max_body_size 5G;
Укажите ограничение на размер тела запроса Nginx в блоке активного сервера, обрабатывающем запросы Nextcloud.
Затем проверьте конфигурацию и перезагрузите Nginx:
sudo nginx -t
sudo systemctl reload nginx
Если Nginx сообщает об ошибке синтаксиса, исправьте её перед перезагрузкой. Если перед Nginx находится другой прокси-сервер, контроллер входящего трафика или шлюз хостинга, он может устанавливать собственное ограничение на длину тела запроса; увеличьте и это ограничение. Ограничение на вышестоящем прокси-сервере может привести к отклонению загрузки, даже если хост Nextcloud настроен правильно.
Для Apache проверьте LimitRequestBodyконфигурацию соответствующего виртуального хоста или каталога. В текущей документации Nextcloud указано, что в Apache HTTP Server 2.4.54 и более поздних версиях эта директива по умолчанию установлена на 1 ГиБ; это может блокировать загрузку одного запроса, превышающую этот размер. Установите преднамеренное ограничение в байтах, соответствующее хосту, или используйте его 0только в том случае, если вы намеренно не хотите устанавливать ограничение на размер тела запроса Apache. Apache также может потребоваться более длительное время ожидания запроса, особенно если mod_reqtimeoutэта функция включена.
Могут ли проблемы с хранилищем или таймауты по-прежнему препятствовать загрузке?
Да. Временный каталог для загрузки PHP, настроенный временный каталог Nextcloud и каталог Nginx client_body_temp_pathдолжны иметь достаточно свободного места и быть доступными для записи. Оставьте место для одновременной загрузки и, в некоторых конфигурациях хранилища, для сборки загруженных фрагментов. Проверьте соответствующую файловую систему с помощью команды `npm install` df -hи убедитесь, что учетная запись службы может записывать в настроенный временный каталог. Не указывайте в настройках временного каталога полный или доступный только для чтения том.
Также проверьте квоту пользователя в Nextcloud и свободное место на сервере. Увеличение лимита размера запроса не увеличивает квоту пользователя и не создает дисковое пространство. Увеличивайте квоту только тогда, когда в учетной записи должно быть достаточно места для файла. Если ошибка возникает ближе к концу загрузки или сообщает о таймауте или ошибке шлюза, проверьте журналы PHP, веб-сервера, прокси и Nextcloud, прежде чем увеличивать лимиты. В руководстве Nextcloud fastcgi_read_timeoutв качестве возможных причин указаны таймауты PHP и Nginx, в том числе во время заключительных запросов MOVE.
upload_max_filesizeОдно важное замечание: параметры PHP post_max_sizeмогут отличаться при обработке запросов WebDAV с одним файлом (PUT) или запросов Nextcloud с пошаговой загрузкой; в этих случаях ограничивающим фактором могут быть тайм-ауты PHP и веб-сервера. Перед изменением значений, которые к нему не относятся, проведите диагностику метода загрузки.
Как можно подтвердить правильность исправления?
Начните с одного тестового файла, размер которого значительно превышает старый лимит, затем протестируйте файл, размер которого близок к новому целевому значению. Загрузите файл через тот же браузер или клиент, который изначально не сработал. Убедитесь, что передача завершена, файл отображается с ожидаемым размером и его можно скачать или открыть. Зеленый индикатор завершения загрузки в окне «Файлы» — полезная первая проверка, но сравните также размер сохраненного файла.
После внесения изменений убедитесь, что тестовый файл, размер которого превышает предыдущий лимит, отображается в ожидаемом размере и считается завершенным.
Если тест по-прежнему не проходит, используйте сообщение об ошибке, чтобы определить следующий ограничивающий уровень: ошибка HTTP 413 указывает на ограничение тела запроса, ошибка 504 или сбой, близкий к завершению, предполагает тайм-аут, а сообщение о квоте или нехватке дискового пространства указывает на емкость хранилища. Просмотрите журналы с той же меткой времени, затем скорректируйте только тот параметр, который вызывает проблему. Держите лимит близким к максимальному ожидаемому объему загрузки и сохраняйте достаточно временного пространства для одновременной активности.