Il sito restituisce 502 Bad gateway: è colpa di Ruby?

Abbiamo un Discourse in esecuzione da almeno tre anni e ieri ho commesso l’errore di riavviare l’istanza nella speranza che ciò permettesse di cambiare il dominio. L’istanza è attiva e vediamo che nginx riceve richieste dall’esterno, ma tutti i visitatori ricevono costantemente un errore “502 Bad gateway”. Ecco un esempio di voce nel log degli errori di nginx:

2020/06/22 19:03:26 [error] 11742#11742: *158 connect() failed (111: Connection refused) while connecting to upstream, client: 162.158.159.12, server: <my domain>, request: "GET                / HTTP/1.1", upstream: "http://127.0.0.1:3000/", host: "<my domain>"

Non c’è alcun server web in esecuzione al di fuori di Docker, quindi il file app.yml inoltra semplicemente le porte 80 e 443 al contenitore. Ma cosa dovrebbe essere in ascolto sulla porta 3000? Dovrebbe essere Ruby / Rails?

Ciao Chris,

Sì, hai ragione.

Rails gira sulla porta 3000 nell’applicazione Discourse.

Potresti controllare il log di Rails nell’app per vedere se riesci a capire cosa sta succedendo con Rails.

Spero che questo ti aiuti un po’.

Stavi cercando di cambiare il nome di dominio per la tua istanza?

Esistono procedure specifiche per questo. Se non segui il processo, possono verificarsi errori come quello che stai riscontrando.

Per favore, segui questa guida: ti aiuterà a cambiare correttamente il nome di dominio.
Change the domain name or rename your Discourse

Esiste un’alternativa di “sviluppo” rispetto al dominio live e, in qualche modo, questa è entrata nella configurazione in modo tale che tutto, tranne le immagini, provenga dal dominio live, mentre le immagini provengono dal dominio di sviluppo. Poiché quest’ultimo non dispone di un certificato, noi (giustamente) incontriamo il problema di sicurezza cross-site e le immagini non vengono caricate.

Stiamo attualmente cercando di ricostruire il container, come suggerito altrove.

Un’ulteriore complicazione è che tutto il traffico passa attraverso CloudFlare, quindi ora stiamo riscontrando problemi con i certificati SSL. Non sono sicuro che il file templates/cloudflare.template.yml funzioni ancora?

È necessario disabilitare Cloudflare per permettere a Let’s Encrypt di richiedere un certificato.

Tutto a posto ora. Il nostro miglior tecnico è riuscito a creare una nuova build e ha persino fatto funzionare Let’s Encrypt!