Ciao!
Il mio sito web utilizza la versione 2.9 di Discourse. Per qualche motivo, ho dovuto utilizzare un doppio nginx per Discourse. Ho distribuito due nodi container web_only di Discourse e ho utilizzato un nginx per fare da proxy di fronte ad essi. Il mio diagramma dell’architettura di sistema:
Ero confuso quando il mio proxy nginx personalizzato, che gestiva due nodi container web_only e distribuiva casualmente le richieste a qualsiasi nodo web_only, a volte riportava errori sul mio sito Discourse: Impossibile trovare il modulo ‘handlebars’ importato da ‘discourse-common/lib/raw-handlebars’, questa volta il browser visita il sito con una schermata bianca. Ma quando ho utilizzato un nginx personalizzato per inoltrare tutte le richieste a uno solo dei nodi web_only, questo errore non si verifica. Ho cercato questo problema, c’erano alcuni commit in precedenza per risolvere questo stesso errore, ho confermato che la mia versione contiene il codice di quei commit.
A proposito, condividi un problema in cui l’uso di doppio nginx causa l’impossibilità di ottenere l’indirizzo IP reale dell’utente.
Questo perché il mio nginx personalizzato abilita il campo header X-Forwarded-For per ottenere l’indirizzo IP del client, ma non disabilita X-Forwarded-For di nginx di discourse. Causa la sovrascrittura della configurazione X-Forwarded-For di nginx personalizzato da parte di nginx di discourse.
E non importa quale usi? E stanno eseguendo la stessa immagine? Questo è sconcertante.
L’unico vantaggio che vedo nell’eseguire due container in quel modo sullo stesso host è renderlo possibile per aggiornamenti a zero downtime. Dato che non aggiorni molto spesso, sembra che tu abbia una complessità non necessaria.
Hai bisogno di qualcosa di simile nel tuo web_only.yml:
Sì, non importa quale uso. Stanno eseguendo la stessa immagine web_only. Continuerò a cercare problemi usando la modalità sicura e se ci saranno conclusioni, riferirò qui.
Mi scuso per l’incomprensione nel mio diagramma di architettura di sistema, ho usato una macchina diversa per distribuire web_only. Il motivo per cui uso il doppio web_only è che il mio container web_only una volta è andato in crash a causa di troppe connessioni, ma all’epoca non ne ho trovato il motivo. Quindi ho provato a usare il doppio web_only per evitare di nuovo lo stesso problema.
Grazie, questo mi ha aiutato a risolvere il problema di ottenere l’IP dell’utente reale.
C’è un’impostazione per aumentare il numero di connessioni.
Aggiornerei. Ci dovrebbero essere alcuni problemi in quella versione e sono abbastanza sicuro che diversi problemi di sicurezza siano stati risolti da allora.
Grazie. Al momento, ricevo ancora lo stesso errore quando provo a eseguire il debug in modalità provvisoria. Sarò pronto a provare l’aggiornamento del mio discourse per vedere se funziona.