Come modificare nginx/discourse.conf
Presumo che qualsiasi modifica a discourse.conf all’interno del container venga comunque ripristinata eseguendo una ricostruzione.
Per mantenere le modifiche, devi in qualche modo aggiungerle alla configurazione del tuo container, ad esempio web_only.yml:
# [… ]
## Ricorda, questa è sintassi YAML - puoi avere solo un blocco con un nome
run:
- exec: echo "Inizio comandi personalizzati"
# [… ]
- replace:
filename: /etc/nginx/conf.d/discourse.conf
from: $proxy_add_x_forwarded_for
to: $http_x_real_ip
global: true
# [… ]
Come eseguire il debug di un’installazione di Discourse in una sottocartella
In un’installazione di Discourse in una sottocartella, una chiamata a Discourse avviene in questo modo:
example.org/forum → [Proxy esterno per example.org] → /path-to-discourse/discourse/shared/web-only/nginx.http.sock → [Nginx nel container web di Discourse]
Quindi, se c’è un errore, dobbiamo prima individuarlo:
- Proxy esterno
- Nginx nel container Discourse
- Discourse stesso
Proxy esterno
- Chiamalo in un browser e controlla il risultato.
- Controlla i log degli errori del proxy esterno.
Nginx nel container Discourse
- Connettiti via SSH al tuo webserver.
- Connettiti direttamente al socket tramite
curl. - Esegui il debug dell’output di
curle dei log diNginx in Discourse
Importante: usa l’URL http – e non https.
curl -I --unix-socket /path-to-discourse/discourse/shared/web-only/nginx.http.sock http://www.example.org/forum/
Se questo funziona, prova una chiamata reale come:
curl --unix-socket /path-to-discourse/discourse/shared/web-only/nginx.http.sock \
-H "user-agent: Chrome/88.0.4324.182" \
-H "Accept-Encoding: gzip" \
http://www.example.org/forum/t/test-thread/12345 --output test-encoded.html.gz