Здравствуйте,
после активации шаблонов Let’s Encrypt и пересборки Discourse всё перестало работать:
NGINX выдаёт загадочную ошибку:
Странно то, что в каталоге /ETC нет папки nginx.
Активны следующие шаблоны:
Вот настройки, с которыми была выполнена пересборка приложения:
В чём может быть причина этих проблем?
Я полагаю, что сертификат должен быть выдан для хоста: discourse.itas-karlsruhe.de .
Я уже проверил с помощью launcher, действительно ли приложение запущено… Да, оно запущено…
И.
Benjamin_D
(Benjamin Decotte)
24.Октябрь.2021 17:59:16
2
Похоже, вы находитесь в домашней директории (~), когда выполняете cd etc. Команда cd /etc/nginx должна сработать.
Нет, я проверил это в правильной директории:
Если у вас стандартная установка Docker, вам также нужно сначала войти в приложение.
cd /var/discourse
./launcher enter app
Если это сработает, вы можете вывести 46-ю строку файла конфигурации с помощью sed:
sed -n '46p' /etc/nginx/conf.d/discourse.conf
При использовании тех же шаблонов, что и у вас, и без каких-либо специфических изменений в этом файле конфигурации, я вижу следующее:
return 301 https://discourse.softpress.com$request_uri;
Спасибо.
Я обнаружил следующее:
Как вы видите, поле «Discourse hostname» заполнено в app.yml:
Похоже, по какой-то причине не подставляется имя хоста, но я не уверен, почему это может происходить. Когда вы пересобирал Discourse, вы делали это, запустив эти команды?
cd /var/discourse
./launcher rebuild app
Единственное различие, которое я вижу между тем, что у вас, и тем, что у меня, — это использование дефиса в доменном имени, но я был бы очень удивлен, если бы это вызвало проблему.
Да, вот как я восстановил приложение…
После восстановления всё, похоже, работает:
pfaffman
(Jay Pfaffman)
25.Октябрь.2021 12:25:27
8
Если вы многократно пересоздавали, то достигли лимитов Let’s Encrypt.
На сервере нет nginx, он находится внутри контейнера Discourse. Вот почему вы его не находите.
Значит, вы решили свою проблему, пересоздав?
Вам стоит отметить этот пост как решение.
Я просто хотел сказать, что в логе я не обнаружил ошибок или чего-то подобного. (См. скриншот)
Процесс сборки, КАЖЕТСЯ, в порядке…
Я сейчас запросил финальный домен. Я пересоберу приложение с его использованием.
После удаления всех специфичных настроек Let’s Encrypt и использования оригинального имени хоста виртуальной машины всё работает. Я не знаю, что не так с этими настройками.
Привет, Саймон,
Я снова пересобрал проект и заметил, что сертификат выпущен с неверным именем:
Возможно, app.yml настроен неправильно?
app.txt (4,1 КБ)
Что вы имеете в виду?
Я
IAmGav
(Gavin Perch)
27.Октябрь.2021 22:46:29
11
строка 51
DISCOURSE_HOSTNAME: deinbalkonnetz.de
это не ваш файл конфигурации. Откуда вы его взяли?
???
Это именно мой файл конфигурации… Мы перенаправили этот домен на нашу виртуальную машину и пытаемся настроить Discourse на этом сервере…
IAmGav
(Gavin Perch)
27.Октябрь.2021 22:54:15
13
Затем в конфигурации нужно изменить все вхождения deinbalkonnetz.de.
После этого необходимо пересобрать приложение.
Что вы имеете в виду под «везде»?
Имя хоста используется только на строке 51 …
Я не знаю других файлов конфигурации, кроме app.yml …
Спасибо, Jammy,
это важные моменты, без вопросов.
Проблема в том, что мой hostname вообще не используется:
DISCOURSE_HOSTNAME: ‘deinbalkonnetz.de ’
Думаю, в сертификате должно использоваться реальное имя хоста “deinbalkonnetz.de ”, а не имя переменной.
Можете добавить http://deinbalkonnetz.de/ как второй домен в сертификат Let’s Encrypt в качестве возможного обходного пути?
NOTE: @pfaffman says: This page needs to be cleaned up. There is now a new ENV setting that will let you add more hostnames. In your app.yml under your DISCOURSE_HOSTNAME line (it can go many places but that one makes sense), add
DISCOURSE_HOSTNAME_ALIASES: domain.com,other.domain.com
and early reports suggest that you’ll get valid certs for those domains and that accessing https://domain.com will properly redirect you to your DISCOURSE_HOSTNAME without a certificate error.
If you do that an…