Estoy intentando confirmar la arquitectura correcta para servir una aplicación personalizada en una sub-ruta mientras se mantiene Discourse en la raíz (/), sin modificar los internos de Discourse.
Lo que quiero (objetivo final)
https://midominio.com/ → Discourse
https://midominio.com/tickets → Sistema de tickets personalizado (Go + Gin)
Requisitos:
Discourse debe permanecer en / y el sistema de tickets debe vivir en /tickets
Mismo dominio
Sin plugin de Discourse
Entorno actual
VPS de OVH (Ubuntu) con Discourse ejecutándose en Docker (/var/discourse)
Aplicación Go personalizada ejecutándose en el mismo servidor en 127.0.0.1:8080
Nginx externo instalado en el host (no dentro del contenedor)
NO estoy intentando ejecutar Discourse en una subcarpeta como /forum. Ah, y antes de que alguien pregunte, sí, he intentado usar el plugin de tickets de Discourse; no funciona como quiero.
Creo que esas son probablemente tus mejores instrucciones, sin embargo. Seguirás esas instrucciones, pero de forma inversa. Harás que tu proxy inverso externo sirva / a Discourse y /tickets a tu aplicación.
Creo que el nginx externo es la forma más fácil de hacerlo. Sería posible crear una plantilla que permitiera al interno hacerlo, pero es más complicado y, creo, con poca ganancia.
Sí, pero no necesitas hacer ningún cambio en el contenedor de Discourse aparte de eliminar las plantillas de ssl/let’s encrypt y tal vez usar un socket. (Así que, en realidad, no hay mucho en ese tema que sea de mucha ayuda).
El enlace “Tickets” que añadí al encabezado de Discourse también funciona, cuando se establece en blanco y NO en sí mismo, ya que /tickets se trata entonces como una ruta de Discourse e intenta simplemente cambiar la vista de react. El blanco fuerza una recarga completa de la página.
Si quieres arreglar eso, estoy bastante seguro de que un componente de tema lo hará agregando una ruta para /tickets y diciéndole que haga… algo (no soy muy bueno con Ember). Además, creo que podrías agregar otro subdominio a tu servidor Discourse (como tickets.mydomain.com) usando DISCOURSE_HOST_ALIASES y luego enlazar a ese dominio, lo que haría una redirección, para que Ember no intente capturar la ruta.