Сайт возвращает 502 Bad gateway — это Ruby?

У нас есть Discourse, который работает уже как минимум три года, и вчера я совершил ошибку, перезапустив инстанс в надежде, что это поможет сменить домен. Инстанс запущен, и мы видим, что nginx принимает запросы извне, но все посетители постоянно получают ошибку «502 Bad gateway». Вот пример записи в журнале ошибок nginx:

2020/06/22 19:03:26 [error] 11742#11742: *158 connect() failed (111: Connection refused) while connecting to upstream, client: 162.158.159.12, server: <my domain>, request: "GET                / HTTP/1.1", upstream: "http://127.0.0.1:3000/", host: "<my domain>"

Вне Docker веб-сервер не запущен, поэтому файл app.yml просто пробрасывает порты 80 и 443 в контейнер. Но что должно работать на порту 3000? Разве это не должен быть Ruby / Rails?

Привет, Крис:

Да, вы правы.

Rails работает на порту 3000 в приложении Discourse.

Возможно, стоит проверить лог Rails в приложении, чтобы понять, что происходит с Rails.

Надеюсь, это немного поможет.

Вы пытались изменить доменное имя вашего экземпляра?

Для этого существуют установленные процедуры. Если не пройти этот процесс, могут возникнуть ошибки, подобные той, с которой вы столкнулись.

Пожалуйста, следуйте этому руководству, оно поможет вам правильно изменить доменное имя.
Change the domain name or rename your Discourse

Существует альтернатива «development» для live-домена, и каким-то образом она попала в конфигурацию так, что всё, кроме изображений, загружается с live-домена, а изображения — с dev-домена. Поскольку у последнего нет сертификата, мы (вполне обоснованно) сталкиваемся с проблемой межсайтовой безопасности, и изображения не загружаются.

В настоящее время мы пытаемся пересобрать контейнер, как было предложено в других местах.

Дополнительная сложность заключается в том, что весь трафик проходит через CloudFlare, поэтому у нас возникли проблемы с SSL-сертификатами. Не уверен, что файл templates/cloudflare.template.yml всё ещё работает?

Вам нужно отключить Cloudflare, чтобы Let’s Encrypt мог запросить сертификат.

Всё исправлено. Наши лучшие специалисты создали новую сборку и даже смогли заставить работать LetsEncrypt!