Um upload no Nextcloud que para em 2 GB geralmente está sendo limitado por uma camada específica no caminho da requisição, e não por uma configuração universal do Nextcloud. Para aceitar arquivos maiores, defina um limite acima do tamanho do arquivo em cada camada que processa o upload: PHP, servidor web e qualquer proxy reverso ou painel de hospedagem. Em seguida, verifique se o armazenamento, o espaço temporário e os tempos limite de requisição são suficientes para a transferência.
Este guia usa um limite de 5 GB como exemplo para arquivos de até aproximadamente 4 GB. Escolha um limite que corresponda ao seu caso de uso real, deixe uma margem para sobrecarga de requisições quando aplicável e mantenha a configuração consistente em toda a sua infraestrutura. Os exemplos se aplicam a um servidor Nextcloud autogerenciado usando PHP; hospedagem gerenciada, contêineres e appliances podem apresentar caminhos de configuração diferentes.
Por que um upload de 2 GB pode falhar
O manual de administração atual do Nextcloud explica que uploads grandes podem ser limitados pela configuração do PHP e do servidor web. Com uploads em partes, o navegador ou cliente envia fragmentos que o Nextcloud monta; algumas diretivas de tamanho de arquivo do PHP podem não controlar essas solicitações, enquanto os tempos limite do servidor web ou do PHP ainda podem. Um proxy, firewall, backend de armazenamento, cota de usuário ou espaço em disco temporário cheio podem impor outra limitação. Consulte o guia de administração de uploads de arquivos grandes do Nextcloud e o guia do usuário do Nextcloud para uploads grandes .
“2 GB” também pode significar 2.000.000.000 bytes ou 2 GiB (2.147.483.648 bytes). O limite exibido e o limite real em bytes podem não corresponder exatamente. Registre o erro, o tamanho do arquivo em bytes e se a falha ocorre imediatamente ou após o início do processamento. Esses detalhes ajudam a identificar qual camada deve ser inspecionada.
1. Identifique a primeira camada que rejeita o upload.
Antes de alterar as configurações, observe como o arquivo é carregado: interface web do Nextcloud, cliente de sincronização para desktop ou celular, ou aplicativo WebDAV. Teste com um arquivo ligeiramente maior que o limite anterior, mas não faça uploads repetidos de arquivos com vários gigabytes durante a resolução de problemas. Verifique a visão geral e o registro de administração do Nextcloud, o registro de erros do servidor web, os registros do PHP-FPM ou Apache e qualquer painel de controle de proxy ou hospedagem no momento da falha.
- Uma resposta HTTP 413 imediata geralmente indica um limite no tamanho do corpo da requisição do servidor web ou do proxy.
- Um aviso do PHP sobre um arquivo que excede o tamanho permitido aponta para configurações de upload do PHP para uma requisição multipart convencional.
- Uma transferência que inicia, mas trava ou expira, sugere timeouts de requisição, uma conexão interrompida ou pressão sobre os recursos.
- Uma mensagem clara sobre quotas significa que o limite de armazenamento disponível no Nextcloud para o usuário, e não o limite de upload do servidor, é o obstáculo.
Esses são indícios, não diagnósticos conclusivos: um proxy pode substituir um erro de aplicativo, e os registros variam de acordo com a implantação. Compare os registros de data e hora em todas as camadas antes de editar a configuração.
2. Defina limites de PHP para envios de formulários do navegador
Localize a configuração PHP usada pelo processo Nextcloud voltado para a web. No Debian ou Ubuntu, um arquivo PHP-FPM típico fica em `/etc/ /etc/php/<version>/fpm/php.iniphp.php`; o Apache com mod_php geralmente usa um arquivo separado apache2/php.ini. A configuração da linha de comando do PHP pode ser diferente, portanto, editar php --iniapenas o arquivo `/etc/php.php` relatado por `php -f` pode não alterar o site. O guia de configuração PHP do Nextcloud descreve o contexto de configuração do lado do servidor.
Para um limite de 5 GB, revise estas configurações na configuração PHP ativa da web:
upload_max_filesize = 5G
post_max_size = 5G
max_input_time = 3600
max_execution_time = 3600
post_max_sizedeve ser pelo menos tão grande quanto upload_max_filesize; definir ambos para o mesmo valor é um ponto de partida prático para um upload multipart de um único arquivo. Os valores de tempo acima são exemplos, não uma garantia de que uma transferência será concluída: escolha uma duração que se adeque à sua largura de banda disponível e à sua política operacional. Não aumente o limite de upload do PHP memory_limitpara 5 GB apenas porque o arquivo tem 5 GB. A documentação do PHP max_input_timeinclui o tempo gasto recebendo a entrada de upload e o fato de que o comportamento do upload depende das diretivas relacionadas; consulte a documentação sobre armadilhas de upload do PHP .
3. Aumente o limite de requisições do servidor web.
Nginx com PHP-FPM
No bloco de servidor Nginx ativo para o Nextcloud, defina um limite para o tamanho do corpo da requisição acima do maior arquivo que você pretende aceitar. Para o exemplo de 5 GB:
client_max_body_size 5G;
Coloque-o no contexto apropriado http, serverevitando locationum valor menor conflitante em um bloco mais específico. O Nginx documenta essa diretiva em sua referência de módulo principal . O exemplo de instalação do Nginx no Nextcloud também inclui configurações de tamanho de upload e tempo limite. Valide a configuração com ` sudo nginx -tnginx -v` antes de recarregar o Nginx.
Apache
Verifique se o host virtual ativo, a configuração do diretório ou a configuração incluída definem o limite LimitRequestBody. Em versões do Apache onde o limite padrão ou explícito é menor que o seu alvo, aumente-o para a contagem de bytes necessária ou use 0a opção sem limite no nível do Apache somente se isso for aceitável para sua implementação. Confirme se a diretiva está em um contexto permitido pela sua versão e configuração do Apache. O Apache descreve seu comportamento na documentação do LimitRequestBody . Execute o comando apachectl configtestantes de recarregar o serviço.
4. Verifique proxies reversos, contêineres e armazenamento.
Se o tráfego passar por outra instância do Nginx, um balanceador de carga, um painel de controle de hospedagem ou um proxy de segurança, os limites de tamanho do corpo e tempo limite também devem permitir o upload. Uma solicitação pode ser rejeitada antes de chegar ao Nextcloud. Atualize apenas a camada que possui essa configuração e, em seguida, inspecione seus logs e código de resposta. Para Docker ou outra implantação de contêiner, altere a configuração montada no contêiner em execução ou as configurações de ambiente compatíveis com essa imagem; um arquivo PHP do host pode não ser usado pelo contêiner.
Uploads grandes também consomem recursos. Confirme se o volume de dados do Nextcloud tem espaço livre suficiente e se o diretório temporário do PHP ou do servidor web comporta a carga de trabalho. No caso de uploads em partes, pode ser necessário espaço temporário enquanto as partes são montadas; implantações com armazenamento de objetos podem precisar de disco temporário adicional. Planeje para uploads simultâneos, não apenas para um arquivo de tamanho máximo. Consulte a seção do Nextcloud sobre espaço temporário e uploads de arquivos grandes antes de aumentar o limite em uma instalação com alta demanda.
5. Aplique as alterações e verifique com um teste controlado.
Após a aprovação nas verificações de configuração, recarregue ou reinicie os serviços relevantes do PHP-FPM e do servidor web para que eles reconheçam as configurações atualizadas. Os nomes exatos dos serviços variam de acordo com a distribuição e a versão do PHP. Evite reiniciar serviços de produção não relacionados. Em seguida, faça o upload de um arquivo um pouco acima do limite anterior de 2 GB — como um arquivo de teste conhecido com cerca de 2,1 GB — usando o mesmo cliente e rota que falharam inicialmente. Mantenha o teste abaixo do novo limite e monitore o espaço livre em disco, os logs e o progresso da transferência.
Um teste bem-sucedido deve terminar sem erros de tamanho HTTP ou tempo limite excedido, aparecer na pasta Nextcloud correta e ter um tamanho de arquivo plausível quando verificado no cliente. Para arquivos importantes, compare o checksum na origem e no destino, se o seu fluxo de trabalho permitir. Uma barra de progresso que atinge 100% não garante que o arquivo armazenado esteja completo.
Quando essa solução não for suficiente
- O upload pela web funciona, mas o cliente para desktop falha: verifique o comportamento de tempo limite do cliente, do proxy e do servidor. Os clientes Nextcloud usam uploads em partes (chunked uploads), portanto, alterar
upload_max_filesizeapenas o PHP pode não resolver um problema de solicitação de partes ou tempo limite de montagem final.
- O erro indica que o usuário está sem espaço: ajuste a cota do Nextcloud ou o armazenamento gratuito desse usuário; aumentar o limite de solicitações não criará capacidade.
- A falha ocorre na mesma contagem de bytes para todos os clientes: procure por um proxy compartilhado, WAF, provedor de hospedagem ou limite de servidor web e correlacione seus registros com a solicitação.
- Os uploads são concluídos, mas consomem muito espaço em disco temporário: reduza os uploads simultâneos, assegure-se de que o armazenamento temporário seja adequado ou revise o comportamento de fragmentação e armazenamento documentado para seu backend.
Aumentar o limite de upload expande a quantidade de dados que os usuários podem enviar para o servidor, portanto, deve ser combinado com cotas, monitoramento, armazenamento suficiente e controles de acesso adequados. Não existe um limite máximo seguro universal: o limite prático depende da velocidade mais baixa no caminho da requisição e da capacidade do servidor e do sistema de armazenamento.
Referências