Я запускаю собственную инстанцию Discourse по адресу forum.embeetle.com. Она работает стабильно уже несколько лет.
Сегодня утром я заметил, что все взаимодействия с форумом через клавиатуру и мышь в браузере прекратились. Я могу загружать любые страницы форума, но не могу прокручивать, входить в систему, выполнять поиск и т.д.
Я попробовал Firefox и Chromium — проблема сохраняется в обоих случаях.
Я не выполнял недавних обновлений и не устанавливал новых плагинов.
Есть ли какие-либо предложения, как отладить и исправить это?
Насколько мне известно, у меня стандартная установка на базе Docker, за исключением того, что я запускаю её за обратным прокси-сервером Nginx. Конфигурация Nginx ниже (не уверен, что это имеет значение):
Я не помню, чтобы когда-либо устанавливал тему по умолчанию, но, возможно, я это сделал и забыл об этом.
Я хотел бы временно отключить темы по умолчанию, чтобы наш форум оставался рабочим, пока мы выясняем, что не так с темами. Как это сделать, если я могу получить доступ к административным страницам только при отключенных темах? В безопасном режиме все темы уже отключены, и их включение с последующим повторным отключением, похоже, не дает никакого эффекта.
Доступно три темы (см. ниже). Ни одна из них не включена по умолчанию.
Странно, у меня в Safari сообщается, что он отказывается выполнять строку 315. Это встроенный скрипт для прелоадера Discourse-splash. Так что проблема не связана с темой.!
Для немедленного исправления вы можете отключить CSP через настройку сайта:
Только предположение: если проблема всё ещё сохраняется, возможно, ваша серверная среда отправляет что-то неожиданное. Или какой-то другой скрипт мешает (запускаете ли вы какие-либо пользовательские плагины или другие скрипты?)
Обратите внимание, что это оставит вас в уязвимом состоянии, и проблему следует устранить как можно скорее. Но по крайней мере ваш форум снова работает.
Пока я применил другое обходное решение, добавив правило перезаписи в конфигурацию nginx (на уровне сервера) следующим образом:
rewrite ^(.*)$ $1?safe_mode=no_themes break;
Теперь посетители по умолчанию будут использовать безопасный режим.
Чтобы позволить дальнейшее исследование этой проблемы, я также создал копию сервера форума без правила rewrite по адресу https://raw.forum.embeetle.com. Если вы перейдете по этому URL, вы всё ещё увидите исходную проблему.
Я не использую никаких пользовательских скриптов. Я использую некоторые плагины; поэкспериментирую, отключая их, чтобы проверить, есть ли какой-либо эффект.
Нашёл: это действительно была проблема с моей конфигурацией nginx, которая теперь случайно добавляла заголовок Content-Security-Policy, слишком строгий для Discourse.