Servir Discourse desde una subcarpeta (prefijo de ruta) en lugar de un subdominio

Cómo editar nginx/discourse.conf

Supongo que cualquier cambio en discourse.conf dentro del contenedor se revierte al reconstruir de todos modos.

Para mantener los cambios, debes agregarlos de alguna manera a la configuración de tu contenedor, por ejemplo, web_only.yml:

# [… ]
## Recuerda, esta es sintaxis YAML; solo puedes tener un bloque con un nombre
run:
  - exec: echo "Comienzo de comandos personalizados"
# [… ]
  - replace:
      filename: /etc/nginx/conf.d/discourse.conf
      from: $proxy_add_x_forwarded_for
      to: $http_x_real_ip
      global: true
# [… ]

Cómo depurar una instalación de Discourse en una subcarpeta

En una instalación de Discourse en una subcarpeta, una llamada a Discourse funciona de la siguiente manera:
example.org/forum[Proxy externo para example.org]/path-to-discourse/discourse/shared/web-only/nginx.http.sock[Nginx en el contenedor web de Discourse]

Por lo tanto, si hay un error, primero debemos localizarlo:

  • Proxy externo
  • Nginx en el contenedor de Discourse
  • El propio Discourse

Proxy externo

  • Llama desde el navegador y comprueba el resultado.
  • Comprueba los registros de errores del proxy externo.

Nginx en el contenedor de Discourse

  1. Conéctate por SSH a tu servidor web.
  2. Conéctate directamente al socket con curl.
  3. Depura la salida de curl y los registros de Nginx en Discourse

Importante: usa la URL http y no https.

curl -I --unix-socket /path-to-discourse/discourse/shared/web-only/nginx.http.sock http://www.example.org/forum/

Si esto funciona, prueba una llamada real como:

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 Me gusta