Описание проблемы
Недавно я настраивал новый сервис CDN и конфигурировал DISCOURSE_LONG_POLLING_BASE_URL в app.yml, чтобы отделить службу длинного опроса от исходного сервера.
Однако message bus продолжает делать запросы к “/”, игнорируя настроенный базовый URL для длинного опроса.
Шаги для воспроизведения
- Настройте
DISCOURSE_LONG_POLLING_BASE_URLвapp.yml, указав пользовательский URL CDN. - Пересоберите и запустите Discourse.
- Убедитесь, что фронтенд корректно считывает значение переменной окружения.
- Отслеживайте сетевые запросы message bus в инструментах разработчика браузера.
Некоторые скриншоты
Фронтенд корректно считывает настройку:
Ожидаемое поведение
Message bus должен использовать настроенную параметр long_polling_base_url для своих запросов, если он указан.
Фактическое поведение
Message bus продолжает делать запросы к “/”, независимо от конфигурации DISCOURSE_LONG_POLLING_BASE_URL.
Основная причина
Проблема находится в файле app/assets/javascripts/discourse/app/instance-initializers/message-bus.js.
Логика установки messageBus.baseUrl некорректно обрабатывала параметр сайта long_polling_base_url, из-за чего значение по умолчанию оставалось /, даже если был настроен пользовательский URL.
Исправление
Я выявил и исправил проблему в инициализаторе экземпляра message bus. Исправление гарантирует, что при задании siteSettings.long_polling_base_url и его отличии от “/” базовый URL message bus будет правильно настроен.
Проверка
- Подтверждено, что фронтенд корректно считывает переменную окружения.
- Исправлена логика инициализации message bus для учёта настройки.
- Все проверки форматирования пройдены.
- Message bus теперь корректно использует настроенный базовый URL для длинного опроса.
Эта ошибка затрагивает любые установки Discourse, использующие пользовательскую настройку CDN с длинным опросом, что препятствует корректному использованию CDN для запросов message bus.
Благодарим @David_Ghost. Пожалуйста, перейдите к обсуждению здесь:
