Ciao al team di Discourse,
Sto eseguendo un server nginx sulla mia macchina host e un container Discourse abbastanza standard in Docker. Fondamentalmente, ho un piccolo numero di cartelle specifiche (HTTP) servite dall’nginx dell’host, mentre tutto il resto viene inoltrato al container Discourse tramite proxy_pass.
Per quanto capisco il problema, è sufficiente sapere che il file di configurazione nginx dell’host definisce una location /xyz, gestita dall’nginx dell’host, e poi una location / definita per essere inoltrata (proxy_pass) al container Discourse.
Per il mio caso d’uso, devo pubblicare collegamenti come post su Discourse che puntano a my.domaiin.com/xyz/some.html, ovvero collegamenti all’interno di Discourse che indicano pagine servite dall’nginx dell’host.
Questo funzionava fino all’ultimo aggiornamento di Discourse. Ora, cliccando sui collegamenti, si finisce nella pagina “non è stato possibile trovare…” di Discourse. Al contrario, copiando i target dei collegamenti e aprendoli in una nuova scheda funziona come previsto.
Ho una buona conoscenza dei protocolli a basso livello, ma più si sale nello stack dei protocolli, meno ne so ![]()
L’ipotesi corrente è che l’nginx di Discourse mantenga la connessione aperta (keepalive?), così l’nginx dell’host perde l’opportunità di analizzare il nuovo percorso della richiesta per selezionare il server corretto. Le richieste della connessione vengono passate al container così come sono, mantenendo la connessione attiva. Di conseguenza, la richiesta per il percorso /xyz viene gestita da Discourse, che non conosce questa cartella.
Come dovrei affrontare questo problema? Se non esiste una soluzione semplice, sarebbe già utile ricevere alcuni suggerimenti, anche una buona descrizione relativa a una conoscenza decente del protocollo HTTP potrebbe aiutare.
Grazie!