Ciao a tutti,
Sto riscontrando un problema specifico per cui i video più grandi di 5 MB non riescono a generare anteprime Onebox sulla mia istanza Discourse (installazione Docker standard), mentre gli stessi link video funzionano perfettamente su altri siti Discourse.
Il Problema:
Quando pubblico un link video (ad esempio, un file .webm da 5,1 MB), l’Onebox fallisce. Ho isolato il problema in un fallimento nella negoziazione della richiesta Range.
Risultati del debug dalla console Rails:
- Test Ruby Manuale (Successo): Utilizzando
Net::HTTPstandard e impostando manualmente l’headerRange: bytes=0-10, ottengo con successo un 206 Partial Content dal server di origine. - Test di Sistema Discourse (Fallimento): Quando Discourse tenta di recuperare lo stesso URL tramite
FinalDestination.new(url).get, riceve un 200 OK (Net::HTTPOK) invece di un 206. Di conseguenza, tenta di scaricare l’intero file, raggiunge il limite di 5 MB diMAX_REQUEST_SIZE_BYTESe l’Onebox fallisce con un errore di “dimensione troppo grande”.
Ho già testato le seguenti configurazioni, ma il problema persiste:
- Impostato una stringa simile a quella di un browser in
onebox_user_agent. - Aggiunto il dominio di origine a
force_custom_user_agent_hosts. - Verificato che il server non abbia un proxy globale configurato (
env | grep -i proxyè vuoto). - Testato lo stesso URL su altre istanze Discourse, dove l’anteprima Onebox funziona perfettamente.
La Domanda:
Perché una istanza Discourse non riesce a negoziare una richiesta Range (206) mentre un’altra istanza, che punta allo stesso identico URL, riesce sulla stessa rete?
C’è qualche configurazione interna specifica, middleware di sicurezza o logica di FinalDestination che potrebbe rimuovere gli header Range o causare al server remoto di tornare a una risposta 200 completa?
Qualsiasi intuizione o indicazione su dove guardare successivamente sarebbe molto apprezzata!