Здравствуйте,
У меня возникла странная проблема с моим Discourse: ошибки 502 возникают только для одной конкретной учетной записи (администратора) после входа в систему, в то время как:
-
Анонимные пользователи могут нормально получать доступ к сайту
-
Другие учетные записи пользователей могут входить в систему и использовать сайт без проблем
-
Проблема проявляется только для одной конкретной учетной записи (учетной записи администратора)
Окружение
-
Discourse установлен с помощью официальной настройки Docker
-
Обратный прокси / CDN: ArvanCloud (аналогично Cloudflare)
-
Доступ к международному интернету ограничен / нестабилен (GitHub и некоторые внешние сервисы недоступны)
-
Discourse не обновлялся около 1 месяца
Симптомы
При доступе к сайту:
-
Если открыть сайт в режиме инкогнито/приватном режиме → сайт загружается нормально
-
Если войти в систему с помощью основной учетной записи → сразу возникает ошибка 502 Bad Gateway
-
Если войти в систему с помощью другой учетной записи → всё работает нормально
Таким образом, проблема явно специфична для пользователя и возникает после аутентификации.
Журналы ошибок CDN (ArvanCloud)
Появляются две основные ошибки:
1. Тайм-аут при чтении данных от upstream
upstream timed out (110: Connection timed out) while reading upstream
Затронутые URL-адреса в основном относятся к ресурсам, например:
-
/assets/browser-detect-*.js
-
/assets/plugins/automation-*.js
-
/assets/plugins/discourse-gamification-*.js
-
/assets/plugins/discourse-lazy-videos-*.js
2. Upstream преждевременно закрыл соединение
upstream prematurely closed connection while reading response header from upstream
Например:
-
/stylesheets/common_theme_rtl_*.css
-
/theme-javascripts/*.js
Таким образом, CDN ожидает ответ от Discourse, но бэкенд истекает по тайм-ауту или закрывает соединение.
Что я обнаружил на бэкенде
В трассировках стека Rails путь ошибки указывает на:
-
current_user_serializer.rb -
discourse_updates.rb -
метод:
DiscourseUpdates.has_unseen_features?
Это указывает на то, что сбой/тайм-аут происходит при проверке объявлений о новых функциях для вошедших в систему пользователей.
Поскольку затронут только один пользователь, это сильно указывает на то, что проблема возникает во время сериализации, специфичной для пользователя, а не при глобальном отображении сайта.
Буду признателен за любые рекомендации.
Большое спасибо.