Un caricamento su Nextcloud che si blocca a 2 GB è solitamente limitato da un singolo livello del percorso di richiesta, non da un'unica impostazione universale di Nextcloud. Per accettare file di dimensioni maggiori, imposta un limite superiore alla dimensione del file in ogni livello che gestisce il caricamento: PHP, il server web e qualsiasi proxy inverso o pannello di controllo dell'hosting. Quindi verifica che lo spazio di archiviazione, lo spazio temporaneo e i timeout delle richieste siano sufficienti a supportare il trasferimento.
Questa guida utilizza un target di 5 GB come esempio per file fino a circa 4 GB. Scegli un limite che corrisponda al tuo caso d'uso reale, lascia un margine per l'overhead delle richieste, ove applicabile, e mantieni l'impostazione coerente in tutto il tuo stack. Gli esempi si applicano a un server Nextcloud autogestito che utilizza PHP; l'hosting gestito, i container e gli appliance potrebbero presentare percorsi di configurazione diversi.
Perché un caricamento di 2 GB può fallire
Il manuale di amministrazione di Nextcloud spiega che i caricamenti di file di grandi dimensioni possono essere limitati dalla configurazione di PHP e del server web. Con i caricamenti a blocchi, il browser o il client invia frammenti che Nextcloud assembla; alcune direttive PHP relative alle dimensioni dei file potrebbero non essere applicabili a queste richieste, mentre i timeout del server web o di PHP possono ancora influenzarle. Un proxy, un firewall, un backend di archiviazione, una quota utente o un disco temporaneo pieno possono imporre un ulteriore limite. Consultare la guida di amministrazione di Nextcloud per i caricamenti di file di grandi dimensioni e la guida utente di Nextcloud per i caricamenti di file di grandi dimensioni .
“2 GB” può anche significare 2.000.000.000 di byte o 2 GiB (2.147.483.648 byte). Il limite visualizzato e la soglia effettiva in byte potrebbero non corrispondere esattamente. Annota l'errore, la dimensione del file in byte e se l'errore si verifica immediatamente o dopo l'avvio del processo. Questi dettagli aiutano a identificare quale livello esaminare.
1. Identifica il primo livello che rifiuta il caricamento
Prima di modificare le impostazioni, prendi nota di come viene caricato il file: tramite l'interfaccia web di Nextcloud, il client di sincronizzazione per desktop o dispositivi mobili o l'applicazione WebDAV. Prova con un file leggermente più grande della vecchia soglia, ma evita di caricare ripetutamente file di diversi gigabyte durante la risoluzione dei problemi. Controlla la panoramica e il registro di amministrazione di Nextcloud, il registro degli errori del server web, i log di PHP-FPM o Apache e qualsiasi dashboard del proxy o dell'hosting al momento del problema.
- Una risposta HTTP 413 immediata spesso indica un limite al corpo della richiesta imposto dal server web o dal server proxy.
- Un avviso PHP relativo a un file che supera la dimensione consentita indica un problema con le impostazioni di caricamento PHP per una richiesta multipart convenzionale.
- Un trasferimento che inizia ma si blocca o va in timeout suggerisce timeout della richiesta, una connessione interrotta o problemi di risorse.
- Un messaggio chiaro relativo alla quota indica che l'ostacolo è rappresentato dallo spazio di archiviazione Nextcloud disponibile per l'utente, piuttosto che dal limite di caricamento del server.
Questi sono indizi, non diagnosi definitive: un proxy può sostituire un errore dell'applicazione e i log variano a seconda dell'implementazione. Confronta i timestamp tra i diversi livelli prima di modificare la configurazione.
2. Impostare i limiti PHP per il caricamento dei moduli del browser
Individua la configurazione PHP utilizzata dal processo Nextcloud lato server. Su Debian o Ubuntu, un tipico file PHP-FPM si trova in /etc/php/<version>/fpm/php.ini; Apache con mod_php utilizza comunemente un file separato apache2/php.ini. La configurazione PHP da riga di comando può essere diversa, quindi la modifica del solo file segnalato da php --inipotrebbe non cambiare il sito web. La guida alla configurazione PHP di Nextcloud descrive il contesto di configurazione lato server.
Per un limite massimo di 5 GB, rivedere queste impostazioni nella configurazione PHP web attiva:
upload_max_filesize = 5G
post_max_size = 5G
max_input_time = 3600
max_execution_time = 3600
post_max_sizedovrebbe essere almeno grande quanto upload_max_filesize; impostare entrambi allo stesso target è un punto di partenza pratico per un caricamento multipart di un singolo file. I valori temporali sopra riportati sono esempi, non una garanzia che un trasferimento verrà completato: scegli una durata adatta alla larghezza di banda disponibile e alla politica operativa. Non aumentare PHP memory_limita 5 GB solo perché il file è di 5 GB. La documentazione PHP max_input_timeinclude il tempo impiegato per ricevere l'input di caricamento e il fatto che il comportamento di caricamento dipende dalle direttive correlate; consulta la documentazione sui problemi di caricamento di PHP .
3. Aumentare il limite di richieste al server web
Nginx con PHP-FPM
Nel blocco server Nginx attivo per Nextcloud, imposta un limite per il corpo della richiesta superiore alla dimensione massima del file che intendi accettare. Per l'esempio da 5 GB:
client_max_body_size 5G;
Posizionalo nel contesto appropriato , httpevitando un valore inferiore in conflitto in un blocco più specifico. Nginx documenta questa direttiva nel suo riferimento al modulo principale . L'esempio di installazione di Nginx di Nextcloud include anche le impostazioni upload-size e timeout. Convalida la configurazione con prima di ricaricare Nginx.serverlocationsudo nginx -t
Apache
Verifica se l'host virtuale attivo, la configurazione della directory o i set di configurazione inclusi sono impostati LimitRequestBody. Nelle versioni di Apache in cui un limite predefinito o esplicito è inferiore al tuo obiettivo, aumentalo al conteggio di byte richiesto oppure 0non utilizzare alcun limite a livello di Apache solo se ciò è accettabile per la tua distribuzione. Conferma che la direttiva sia posizionata in un contesto consentito dalla tua versione e configurazione di Apache. Apache descrive il suo comportamento nella documentazione di LimitRequestBody . Esegui apachectl configtestprima di ricaricare il servizio.
4. Verificare i proxy inversi, i contenitori e lo spazio di archiviazione
Se il traffico passa attraverso un'altra istanza Nginx, un bilanciatore di carico, un pannello di controllo dell'hosting o un proxy di sicurezza, anche i limiti di dimensione del corpo e di timeout devono consentire il caricamento. Una richiesta può essere rifiutata prima di raggiungere Nextcloud. Aggiorna solo il livello che gestisce tale impostazione, quindi esamina i relativi log e il codice di risposta. Per Docker o un'altra distribuzione in container, modifica la configurazione montata nel container in esecuzione o le impostazioni dell'ambiente supportato per tale immagine; un file PHP dell'host potrebbe non essere utilizzato affatto dal container.
Anche i caricamenti di grandi dimensioni consumano risorse. Verifica che il volume dati di Nextcloud disponga di spazio libero sufficiente e che la directory temporanea di PHP o del server web possa gestire il carico di lavoro. Con i caricamenti a blocchi, potrebbe essere necessario spazio temporaneo durante l'assemblaggio dei blocchi; le implementazioni di object storage potrebbero richiedere ulteriore spazio su disco temporaneo. Pianifica i caricamenti simultanei, non solo un singolo file di dimensioni massime. Consulta la sezione di Nextcloud relativa allo spazio temporaneo e al caricamento di file di grandi dimensioni prima di aumentare il limite in un'installazione con un elevato carico di lavoro.
5. Applicare le modifiche e verificarle con un test controllato
Dopo che i controlli di configurazione sono andati a buon fine, ricaricare o riavviare i servizi PHP-FPM e del server web pertinenti in modo che leggano le impostazioni aggiornate. I nomi esatti dei servizi variano a seconda della distribuzione e della versione di PHP. Evitare di riavviare servizi di produzione non correlati. Quindi caricare un file di dimensioni leggermente superiori al precedente limite di 2 GB, ad esempio un file di test noto di circa 2,1 GB, utilizzando lo stesso client e lo stesso percorso che hanno causato l'errore iniziale. Mantenere il file di test al di sotto del nuovo limite e monitorare lo spazio libero su disco, i log e l'avanzamento del trasferimento.
Un test riuscito dovrebbe terminare senza errori di dimensione HTTP o timeout, il file dovrebbe apparire nella cartella Nextcloud prevista e avere una dimensione plausibile quando viene verificato dal client. Per un file importante, confronta il checksum all'origine e alla destinazione, se il tuo flusso di lavoro lo supporta. Il solo raggiungimento del 100% da parte della barra di avanzamento non garantisce che il file sia stato salvato completamente.
Quando questa soluzione non è sufficiente
- Il caricamento tramite web funziona, ma il client desktop non funziona: è necessario esaminare il comportamento del client, del proxy e del timeout del server. I client Nextcloud utilizzano caricamenti a blocchi, quindi la
upload_max_filesizesola modifica del codice PHP potrebbe non risolvere un timeout della richiesta a blocchi o dell'assemblaggio finale.
- L'errore indica che lo spazio a disposizione dell'utente è esaurito: è necessario regolare la quota Nextcloud o lo spazio di archiviazione libero per tale utente; l'aumento del limite di richieste non creerà capacità aggiuntiva.
- L'errore si verifica allo stesso numero di byte per ogni client: cerca un proxy condiviso, un WAF, un provider di hosting o un limite del server web e confronta i relativi log con la richiesta.
- I caricamenti sono completati ma consumano troppo spazio su disco temporaneo: riduci i caricamenti simultanei, assicurati di avere spazio di archiviazione temporaneo sufficiente oppure rivedi la documentazione relativa alla suddivisione in blocchi e al comportamento di archiviazione del tuo backend.
L'aumento del limite di caricamento amplia la quantità di dati che gli utenti possono inviare al server, pertanto dovrebbe essere abbinato a quote, monitoraggio, spazio di archiviazione sufficiente e controlli di accesso adeguati. Non esiste un limite massimo di sicurezza universale: il limite pratico dipende dal collo di bottiglia più lento nel percorso della richiesta e dalla capacità del server e del sistema di archiviazione.
Riferimenti