Установка Discourse: ошибка 502 Bad Gateway

Всем привет,

У меня всё работало нормально, пока на днях я не обновил Discourse. После обновления возникла следующая проблема: 502 Bad Gateway.

Я использую NGINX и не вносил никаких изменений ни в сам Discourse, ни в основной прокси-сервер NGINX для этого сервиса.

Также я использую Cloudflare DNS и другие сервисы.

Вот что я сделал:

  1. Обновил Discourse через панель администратора сайта (раздел коммитов).
  2. Установил certbot на сервер, хотя позже выяснилось, что он уже был установлен.
  3. Выполнил команды: “sudo snap install core; sudo snap refresh core”.
  4. Обновил npm и nodejs до последних версий.
  5. Пересобрал приложение Discourse, когда понял, что оно не работает после шагов 1–4.

Ещё раз проверил свой обратный прокси NGINX, чтобы убедиться, что я ничего не трогал, и действительно ничего не менял.

Чуть запутался, что именно я мог сделать не так.

Заранее спасибо,
~Blood

1 лайк

После обновления/перезагрузки вы получаете ошибку 502 в течение минуты или двух.

npm и nodejs на сервере не влияют на Discourse, так как всё необходимое подтягивается из контейнера.

Если сервис всё ещё не восстановился, выполните обновление через командную строку:

cd /var/discourse
./launcher rebuild app

Ах, вот как.

Вы можете посмотреть логи:

docker logs -f app

а также

/var/discourse/shared/logs/.....
1 лайк

Я проверил логи с помощью первой команды: docker logs -f app.
Ничего примечательного в них не обнаружил.

Кроме того, похоже, что у меня нет папки /var/discourse/shared/logs/, зато есть:

/var/discourse/shared/standalone/log

Хотя если логи находятся в этой директории, я не совсем уверен, какой именно файл мне нужно просматривать.

О, да. Извините. Есть логи Rails и логи Nginx, если вы спуститесь по правильному пути, который вы указали. Вы можете проверить логи Rails, чтобы увидеть, доходят ли данные от вашего обратного прокси-сервера до контейнера, а также проверить логи Rails, чтобы узнать, есть ли ошибка в Rails.

Судя по тому, что я вижу в логах, похоже, что Redis изначально не подключается, но затем проблема устраняется сама собой. Однако я не уверен, было ли это раньше, поэтому честно говоря, не думаю, что проблема в Redis.

Я думал, что дело может быть в рукопожатии SSL, но в файле ошибок NGINX (error.log) я не вижу никаких свежих записей на эту тему.

Если у вас есть внешний обратный прокси, то он должен обрабатывать SSL, а не Discourse. Если в вашем YAML-файле присутствуют шаблоны для SSL и Let’s Encrypt, это может быть причиной проблемы, хотя вы говорили, что раньше всё работало.

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

И это работало раньше, probably несколько дней назад, до того как я немного повозился с обновлениями и т.д. Хотя, судя по тому, что я вижу, это не единственный сервис, с которым у меня возникают проблемы, что заставляет меня думать, что дело в стороне NGINX.

1 лайк

Оставляю это здесь для тех, у кого возникла подобная проблема. У меня были проблемы с SSL-сертификатами — по какой-то причине они становились null и просто не работали.

Я перешёл с Cerbot на сертификаты Cloudflare Origin и сейчас заново настраиваю сетевые компоненты. :’)

Также я использую сокет как прокси, а не внутренний IP + порт, как было в моей старой настройке.

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.