Я пытаюсь подтвердить правильную архитектуру для размещения пользовательского приложения по подпути, сохраняя Discourse в корне (/), без изменения внутренних компонентов Discourse.
Discourse должен оставаться в /, а приложение — в /tickets
Один домен
Никаких плагинов Discourse
Текущая среда
OVH VPS (Ubuntu), Discourse работает в Docker (/var/discourse)
Пользовательское приложение на Go работает на том же сервере по адресу 127.0.0.1:8080
Внешний nginx установлен на хосте (не внутри контейнера)
Я не пытаюсь запустить Discourse в подпапке, например /forum. И прежде чем кто-то спросит: да, я пробовал использовать плагин Discourse Tickets — он не работает так, как мне нужно.
Думаю, это, пожалуй, лучшие инструкции. Вам нужно будет следовать им, но как бы наоборот. Ваш внешний обратный прокси будет направлять / в Discourse, а /tickets — в ваше приложение.
Я думаю, что внешний nginx — самый простой способ это сделать. Можно было бы создать шаблон, позволяющий сделать то же самое с внутренним, но это сложнее и, на мой взгляд, даёт мало преимуществ.
Да, но вам не нужно вносить какие-либо изменения в контейнер Discourse, кроме удаления шаблонов ssl/let’s encrypt и, возможно, использования сокета. (Так что, по сути, в той теме мало что действительно полезно.)
Ссылка «Tickets», которую я добавил в заголовок Discourse, тоже работает, если установить её значение не как «self», а оставить пустым. Тогда /tickets воспринимается как маршрут Discourse, и просто меняется React-представление. Пустое значение заставляет выполнить полную перезагрузку страницы.
Если вы хотите это исправить, я почти уверен, что компонент темы поможет, если добавить маршрут для /tickets и указать ему делать . . . что-то (я не очень силен в Ember). Также, думаю, вы можете добавить еще один поддомен к вашему серверу Discourse (например, tickets.mydomain.com), используя DISCOURSE_HOST_ALIASES, и затем ссылаться на этот домен. В этом случае произойдет перенаправление, и Ember не попытается перехватить маршрут.