Я настроил серверы Discourse примерно в 5 экземплярах, и все они демонстрируют странное поведение. Не уверен, является ли это багом, или кто-то ещё сталкивался с подобным.
Шаги для воспроизведения
Настройка сервера проходит гладко.
Мастер настройки работает корректно, все изображения загружаются и отображаются как ожидалось.
Пользователь получает ссылку для регистрации, переходит по ней, и процесс регистрации проходит успешно.
(Именно здесь начинаются проблемы) Пользователь входит в систему, и все логотипы сайта отображаются неверно — показывается только текстовый заголовок.
Пользователь не может загрузить или назначить собственный аватар.
Сертификат сайта выдаёт ошибку о том, что соединение небезопасно.
По какой-то причине это влияет ТОЛЬКО на браузер, в котором была выполнена регистрация, и в Chrome частота сбоев значительно выше.
Устранение неполадок
Мы советовали пользователям очистить кэш и файлы cookie браузера — проблема сохраняется.
Мы просили пользователей переустановить браузеры (в основном Chrome) — проблема сохраняется.
Мы предлагали пользователям использовать другую учётную запись в Chrome или попробовать другой браузер (Safari, Firefox и т. д.) — всё работает!
Мы совершенно не понимаем, почему последний пункт помогает и почему исходная учётная запись, созданная при регистрации, оказывается повреждённой. Невозможно требовать от наших пользователей (около 600–700 человек) выходить из своей учётной записи Chrome и снова входить в неё, даже если это действительно решение проблемы.
Это стандартная установка на 30 минут? Или здесь есть какие-то кастомные настройки?
Вы включили force_https в настройках сайта, чтобы проверить, исправит ли это проблему?
Мне не удалось воспроизвести ваши действия в моей песочнице на последней ветке, поэтому было бы очень полезно, если бы вы поделились ссылкой на один из затронутых экземпляров.
Хорошо. Все экземпляры установки получают свой сертификат от обратного прокси-сервера Nginx, который НЕ находится на той же машине. Будет ли force_https всё ещё иметь значение?
Так что это не стандартная установка. Вы говорили, что она стандартная.
Если Discourse находится за правильно настроенным обратным прокси, параметр force_https обязательно внесёт изменения. Эта настройка по сути указывает Discourse загружать все ресурсы и активы по протоколу HTTPS.
Кстати, да. Заблокируйте меня. Включение force_https решило проблему с изображениями, НО сделало невозможным аутентификацию в браузерах с новой сессией. Существующая сессия работает нормально, но как только вы выходите из системы, вернуться обратно нельзя.
Только что проверил: я уже фактически настроил всё в блоке сервера так, как предлагается в статье. Вероятно, именно поэтому сессии в альтернативных профилях или браузерах работают нормально после первоначальной регистрации/авторизации.
Единственное отличие моей конфигурации в том, что я не использую templates.yml.
Это потребует гораздо более глубокого расследования.
Попробуйте зарегистрироваться в режиме инкогнито. Ошибка всё ещё появляется?
И ещё один момент, который, как я предполагаю, вызывает подозрение. Вы используете какой-то внешний механизм аутентификации? (социальный вход, SSO и т. д.)
Нет. Внешняя авторизация не используется. Пробовал в режиме инкогнито. Безрезультатно. Тот же результат. Должно быть, дело в блоке сервера. Разберусь чуть позже.