In precedenza gestivamo una configurazione multisito di Discourse con circa 22 forum diversi. Recentemente, abbiamo deciso di rimuovere la configurazione multisito mantenendo solo il sito predefinito:
Sito predefinito ora:forum.mamapedia.com Dominio multisito precedente rimosso:forum.employ.com (e altri 21)
Il Problema:
Anche dopo aver disabilitato la configurazione multisito, i vecchi domini multisito possono ancora servire il forum predefinito (forum.mamapedia.com). Ad esempio:
Visitare forum.mamapedia.com funziona come previsto
Ma visitare forum.employ.com carica ancora il forum di Mamapedia
Ci aspettavamo che vecchi domini come forum.employ.com facessero una delle seguenti cose:
Mostrassero un errore (poiché non sono più configurati)
Reindirizzassero correttamente o fossero completamente inattivi
Note sulla Configurazione:
Utilizziamo certificati SSL di Cloudflare con l’opzione proxy abilitata (il traffico non va direttamente al nostro server).
Possiamo rimuovere i record A per i vecchi domini, ma vogliamo davvero identificare e correggere la causa principale invece di fare affidamento su una soluzione alternativa basata sul DNS.
Passaggi Eseguiti Finora:
Rimossi i settaggi multisito da discourse.conf e dal database
Riavviato Discourse e verificato le impostazioni di app.yml
Cancellata la cache e testato in modalità incognito
Comportamento Atteso:
forum.mamapedia.com dovrebbe continuare a funzionare
forum.employ.com e gli altri vecchi domini non dovrebbero servire il forum di Mamapedia
Domande:
Come possiamo rimuovere correttamente i vecchi domini in modo che non servano il forum predefinito?
Dobbiamo modificare le impostazioni di Nginx/Traefik, le impostazioni di Cloudflare, o c’è una configurazione specifica di Discourse che ci è sfuggita?
È necessario passare a un’installazione standard. Le cose che hai fatto per renderlo multisite servono a far sì che il server possa gestire diversi domini.
Se crei un nuovo server e ripristini il backup, non puoi far deteriorare nulla, perché puoi semplicemente tornare al vecchio.
L’unica zoppia è che devi puntare il DNS al nuovo server mentre ricostruisci, così può ottenere un certificato. E rendi i DNS di Cloudflare solo DNS.
Il motivo per cui ciò accade è semplice. Multisite selezionerà un forum in base al nome host. Un’installazione non multisite accetterà felicemente qualsiasi nome host a cui la punti. Quindi, finché avrai tutti i vecchi nomi host indirizzati a quell’installazione, servirà il sito rimanente su tutti quei nomi host.
Avere i vecchi record puntati al tuo sito è la causa principale.
Pulire la tua vecchia configurazione non è una soluzione alternativa, è la soluzione.
OMG. Non ricordo l’ultima volta che ho avuto un disaccordo con te su un fatto. Di regola, quando vedo il tuo avatar in un argomento su cui ho commentato, so che imparerò qualcosa!
È vero. Affermano, però, di essere passati a un’installazione standard. Non gli credo.
Da diversi anni ormai (ma penso da quando Let’s Encrypt è disponibile), su un’installazione standard, se vi si accede tramite qualsiasi altro nome host, verrà eseguito un reindirizzamento (puoi verificarlo facilmente usando il numero IP e ho appena fatto un altro test impostando forum.bigmouth.bass in /etc/hosts su un’installazione standard e ha reindirizzato come previsto. Se vi si accede tramite https, cosa che la maggior parte dei browser fa per impostazione predefinita ora, si otterrà un errore di certificato.
Se tutto ciò che era necessario per accedere al tuo sito tramite un altro nome host era il DNS, allora chiunque potrebbe dirottare il tuo sito creando un record DNS che punta al tuo sito.
Penso che questa sia la magia:
La mia ipotesi è che app.yml abbia ancora qualcosa di simile:
Abbiamo controllato app.yml e non ci sono configurazioni personalizzate di reindirizzamento o override. Tuttavia, la nostra istanza ancora non reindirizza gli host sconosciuti al dominio principale.
Configurazione Nginx: C’è un modo per verificare se la logica di reindirizzamento dai template/web.ssl.template.yml viene effettivamente applicata? Dovremmo controllare manualmente la configurazione generata di Nginx all’interno del container?
Debugging di Discourse: Ci sono log o comandi che possiamo eseguire all’interno del container per confermare che Discourse gestisce correttamente gli hostname?
Altri possibili motivi: Se app.yml è pulito, cos’altro potrebbe impedire il comportamento di reindirizzamento atteso? Cloudflare o altre impostazioni potrebbero interferire?
Apprezzerei qualsiasi suggerimento per approfondire questa situazione!
Tutti i vecchi domini hanno la nuvola arancione attivata? Risolvere il problema disattivando la nuvola arancione? Se sì, allora, come ho sempre previsto, Richard ha ragione e devi sistemare la tua configurazione.
Ma se l’uso di Cloudflare permette a un malintenzionato (tu in questo caso) di servire il sito di qualcun altro sul suo dominio, questo sembra un problema.
Abbiamo già rimosso i vecchi domini ma sì, avevano il pulsante arancione abilitato, il problema ora è se qualcuno ottiene il nostro IP del server e un record lì con l’opzione proxy abilitata, servirà il nostro sito con il loro dominio.
Dovresti eseguire discourse-setup per assicurarti di avere davvero un’installazione standard. Se incolli il tuo vecchio app.yml potresti avere qualcosa al suo interno che non dovrebbe esserci. Non sono ancora del tutto convinto che tu abbia una configurazione standard.
Non sono ancora convinto che sia così, ma se lo fosse, non c’è niente che tu possa fare al riguardo.
Voglio davvero ringraziarvi @pfaffman@RGJ, ora è pulito e quasi a posto
Il problema che stiamo affrontando ora è che tutte le immagini del marchio sono scomparse e lo stesso vale per le immagini di alcuni utenti.
I dati del marchio sono a posto, posso scaricarli dal vecchio server, ma per quanto riguarda le immagini degli utenti e tutte le immagini del sito, sono anch’esse mancanti
Hmm. Beh, se fosse il sito principale, mi aspetterei che quel percorso fosse https://forum.mamapedia.com/user_avatar/forum.mamapedia.com/jakeatgetit/24/5872_2.png, ma anche quello non funziona.
Se hai ancora il vecchio sito, farei un backup di questo e lo ripristinerei sul nuovo sito.
Grazie @pfaffman, quello che ho fatto finora sembra funzionare.
Sono entrato nel vecchio server e ho spostato i dati da /var/discourse/shared/standalone/uploads/default allo stesso percorso sul nuovo server e tutti gli avatar e i post degli utenti sono tornati.
Il nuovo problema è che il branding del sito non funziona anche se provo ad aggiornarlo.
Torno qui per vedere se qualcuno ha qualche idea. Siamo molto vicini a chiudere questa questione da parte nostra, abbiamo solo bisogno di un po’ di assistenza per risolvere il problema del salvataggio ‘senza logo’. Grazie in anticipo per qualsiasi idea per risolverlo!