Servire Discourse da una sotto-cartella (prefisso del percorso) invece che da un sottodominio

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

  1. Connettiti via SSH al tuo webserver.
  2. Connettiti direttamente al socket tramite curl.
  3. Esegui il debug dell’output di curl e dei log di Nginx 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
3 Mi Piace