Abbiamo spostato il nostro server da un provider VPS a un altro e ho aggiornato l’istanza tramite launcher rebuild all’ultima versione, da 3.5.0.beta3 a 3.5.0.beta4.
L’istanza ha sempre funzionato bene dietro Cloudflare, ma ora tentare di accedervi porta a un’animazione di caricamento infinita con 5 pallini.
Ho una voce nel file hosts sul mio sistema locale per bypassare Cloudflare, poiché il mio ISP (Deutsche Telekom AG) ha delle pessime policy di peering, quindi l’accesso tramite Cloudflare è a volte molto lento. Quindi all’inizio non ho notato il problema, dato che l’accesso senza Cloudflare funziona bene. Poi ho aggiornato l’istanza e quindi ora non sono sicuro se il VPS modificato o l’aggiornamento di Discourse sia stato il cambiamento rilevante. Ho verificato tramite VPN e rete mobile che il problema sia effettivamente Cloudflare ora, non il cattivo peering del mio ISP, e anche altri utenti riscontrano lo stesso problema. Sia il vecchio che il nuovo VPS hanno IPv6 disponibile, e l’intero sistema è esattamente lo stesso, trasferito come file immagine grezzo.
Non ci sono messaggi di errore, né nel browser (console), né dal proxy del sistema host, né da Nginx all’interno del container, né da Rails o altrove. I documenti HTML e diversi script vengono caricati correttamente e confrontandoli con quelli serviti quando si bypassa Cloudflare, si nota che tutto (ciò che ho controllato) è identico. Anche gli header di risposta sembrano per lo più uguali, a parte alcuni specifici di Cloudflare, ovviamente. Le ultime cose che vedo caricarsi sono il mini profiler:
Ovviamente cancellare la cache del browser, usare finestre private, ecc. non hanno cambiato nulla. Anche cancellare/disabilitare la cache di Cloudflare non aiuta, quindi la cache non è il problema. Ho temporaneamente disabilitato completamente la cache di CF per l’intero forum.
È degno di nota il fatto che il forum venga eseguito su un sottopercorso dietro un proxy Apache sull’host, seguendo queste istruzioni: Serve Discourse from a subfolder (path prefix) instead of a subdomain
In precedenza, avevamo creato solo un link simbolico ln -s . forum invece dei link simbolici uploads/backups e raddoppiato le riscritture delle istruzioni, il che ha funzionato bene per anni (e anche ora senza Cloudflare), ma come parte dei miei sforzi di debug sono passato a queste istruzioni per assicurarmi che il proxy interno applicasse tutte le regole come previsto. L’header fidato è CF-Connecting-IP, anche se ho abilitato anche cloudflare.template.yml, anche se raddoppia un po’ le cose. E ho anche provato a cambiare avanti e indietro varie parti di questi template e delle istruzioni di cui sopra, anche nel tentativo di verificare se gli header IP del proxy facessero qualche differenza, dato che la mancanza di CF-Connecting-IP è una cosa quando si bypassa Cloudflare.
A questo punto sono completamente a corto di idee, non ho una singola traccia da dove possa provenire il problema, nessun log/output correlato da nessuna parte. Tramite Cloudflare, Discourse si blocca semplicemente nell’animazione di caricamento senza ulteriori tracce.
Spero che qualcuno abbia un’idea su come eseguire il debug di questo problema, o se ci sia stata una modifica tra 3.5.0.beta3 e 3.5.0.beta4 che potrebbe essere correlata. Suppongo che un downgrade sia problematico?
Questa è l’istanza: https://dietpi.com/forum/
EDIT: Ho disabilitato Cloudflare per ora. Ma c’è un CNAME che viene ancora passato attraverso Cloudflare, quindi questi due possono essere confrontati: https://www.dietpi.com/forum/


