HTTPS через прокси: Discourse по-прежнему пытается получать файлы через HTTP

Привет! Я только что попытался настроить свой форум Discourse. Когда я нажал на ссылку в электронном письме, я увидел кнопку, но не смог её нажать. Я увидел множество ошибок, которые, похоже, возникают из-за того, что файлы загружаются по HTTP. Это может быть связано с тем, что я использую HTTPS не через Discourse, а через свой веб-сервер Apache2 с помощью ProxyPass. Как сделать так, чтобы файлы запрашивались по HTTPS без использования HTTPS от Discourse? (Или подскажите, как использовать мои уже готовые файлы .crt и .key с Discourse, чтобы это тоже работало :wink:)

Вы включили принудительный HTTPS в Discourse?

Как мне это сделать? (без использования LetsEncrypt или SSL через Discourse)
Достаточно ли раскомментировать templates/web.ssl.template.yml и оставить templates/web.letsencrypt.ssl.template.yml закомментированным? (Извините за вопрос, но пересборка занимает так много времени, что я хочу убедиться на всякий случай)

Вам просто нужно перейти в настройки и установить флажок «Принудительный HTTPS».

Для ясности: убедитесь на 100%, что ваш обратный прокси-сервер может обрабатывать SSL для Discourse, прежде чем включать эту настройку.

:warning: Discourse плохо работает с Apache2… По возможности перейдите на Nginx.

Погодите, какие настройки? Где, черт возьми, я могу найти флажок?

community.example.net/admin — это путь, по которому вы найдете панель администратора Discourse.

Но для этого мне сначала нужен аккаунт на моём форуме, который я не могу создать, пока не исправлю проблему с HTTPS.

Вы можете включить принудительный SSL через консоль:

./launcher enter app
rails c
SiteSetting.force_https = true
exit
exit

Нужно ли мне пересобрать проект или сделать что-то ещё после этого?
Редактирование: Я пересобрал. Всё равно получаю ту же ошибку, что некоторые файлы всё ещё загружаются через HTTP.

force_https был удалён из административного интерфейса, так как он вызывал больше путаницы, чем приносил пользы.

Поскольку Discourse теперь устанавливает HTTPS по умолчанию, ручное включение требуется только в таких случаях, как этот.

Для меня это не было включено по умолчанию. У меня возникли проблемы с использованием скрипта установки, поэтому я отредактировал app.yml. Это причина?

Вы используете HTTP за прокси, отключив шаблон для HTTPS?

Шаблон HTTPS по умолчанию был отключен для меня.
Discourse работает на двух стандартных портах на сервере 2.
Затем я использую ProxyPass в виртуальном хосте apache2 (работающем на сервере 1), где настроен SSL.
Я только что заметил, что могу просто включить HTTPS через Discourse, и поскольку Discourse работает на стандартных портах, я могу просто указать community.website.tld на IP-адрес сервера 2.
Как мне включить SSL? Раскомментировать два шаблона и затем ввести адрес электронной почты для LetsEncrypt? Также, как создать учетную запись в LetsEncrypt? Я не могу найти кнопку «Регистрация» на их веб-сайте.

В общем, включите шаблон для HTTPS и Let’s Encrypt, убедитесь, что порт 443 открыт, и укажите адрес электронной почты перед пересборкой.

Очень мало веских причин размещать Discourse за прокси. Если у него выделенный сервер и FQDN, управлять им станет гораздо проще с использованием вышеуказанных настроек.

Но какую электронную почту мне нужно указать там? Там сказано, что для учётной записи Let’s Encrypt, значит, мне нужно её создать? Где?

Просто укажите email для получения уведомлений. Предварительная регистрация не требуется.

Я только что включил SSL и всё остальное, но теперь получаю ошибку Cloudflare 502.

Убедитесь, что прокси-сервер корректно устанавливает заголовок X-Forwarded-Proto в значение https, что должно исправить определение HTTPS.

На время отключите Cloudflare. Если вы не подвергаетесь частым атакам, он приносит больше вреда, чем пользы.

Если оранжевое облако включено, Discourse не может получить сертификат от Let’s Encrypt.

Сделал. HTTPS теперь работает, всё загружается через HTTPS, НО:
Я всё ещё не могу нажать кнопку на странице подтверждения учётной записи.


В консоли также есть ошибка и несколько предупреждений: