Политика безопасности контента: настройки страницы заблокировали загрузку ресурса ("script-src")

Привет, я настроил Discourse через Docker, но появляется только ошибка, указанная в заголовке.

Какой метод установки вы использовали и что вы настроили помимо самого процесса базовой установки?

Однажды я настраивал образы по отдельности и через docker-compose! Однако ошибка сохраняется!

Что ещё я мог настроить неправильно?

Боюсь, этой информации недостаточно, чтобы люди могли дать совет. Вы следовали стандартному руководству по установке?

Если вы сможете добавить детали о вашей конфигурации, о том, как именно вы установили Discourse, и всё остальное, что вы могли сделать, люди, возможно, смогут предложить вам некоторые идеи. :+1:

Если вы использовали docker-compose, то это не стандартная установка. Возможно, вы использовали Bitnami (который здесь не поддерживается)? Если у вас есть доступ к админ-панели/настройкам, вы можете добавить любой домен, на который пытается сослаться система, если поищете в настройках раздел «безопасность контента».

Почему это принудительно установлено на порты 80 и 443?

@pfaffman

Могу я это изменить?

Я не знаю. У вас явно не стандартная установка, и вы не объяснили, как вы её установили.

Я не знаю, что принуждает что на портах 80 и 443.

Если вы хотите получить хорошую помощь, вам следует использовать стандартную установку. Если вы хотите получить какую-либо помощь, вам нужно рассказать больше о том, как вы установили.

Ну, я использую стандартную установку, которая принудительно занимает порты 80 и 443.

Значит, вы не использовали docker-compose?

Да, стандартная установка требует порты 80 и 443, включает HTTPS и принудительное перенаправление на HTTPS (force_https). Если вы выполнили стандартную установку, у вас не должно возникнуть описанной вами проблемы.

Вы запускали discourse-setup для установки?

Дело в том, что я хочу запустить Discourse на других портах и подключить его через Apache2 с помощью обратного прокси…

Возможно, если вы расскажете, как вы установили, кто-то другой сможет вам помочь. Возможно, вы хотите настроить Discourse на сервере с существующими сайтами Apache.

Я уже говорил! О стандартной установке!!!

Конечно, можно. Вам нужно, например, открыть - "83:80" в app.yml или любой другой порт, который ваш обратный прокси использует для отправки трафика на бэкенд. Также можно использовать веб-сокеты.

Вы хотите использовать обратный прокси, который не является частью стандартной установки.

Я это сделал, но сайт недоступен.

Тогда ваши настройки неверны. Угадать, в чём именно проблема, практически невозможно. Не используйте CSP — это первое, что нужно сделать. Но находятся ли Apache2 и Discourse на одном сервере? Правильно ли настроен Apache2? И так далее.

Как уже говорилось — вы не используете стандартную установку.

Я не могу использовать стандартную установку! Извините, но что здесь так сложно понять? У меня уже запущен Apache2, и я не вижу смысла его останавливать только потому, что Discourse считает, что он недостаточно гибок для работы на других портах.

В этом и проблема всей ситуации

Мой конфиг Apache2:

<VirtualHost *:80>
    ServerName <domain>

    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined

    RewriteEngine on
    RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
</VirtualHost>

<VirtualHost *:443>
    ServerName <domain>

    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined

    SSLEngine On
    SSLCertificateFile    /etc/letsencrypt/live/<domain>/cert.pem
    SSLCertificateKeyFile /etc/letsencrypt/live/<domain>/privkey.pem
    SSLCertificateChainFile /etc/letsencrypt/live/<domain>/fullchain.pem

    ProxyPass / http://127.0.0.1:90/
    ProxyPassReverse / http://127.0.0.1:90/
</VirtualHost>

app.yml:

expose:
  - "90:80"   # http
  - "100:443" # https

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

А поскольку вы ничего не сообщаете, задача становится немного трудной. Мы не можем угадать, верна ли ваша конфигурация или указали ли вы правильный порт в app.yml. Мы абсолютно ничего не знаем о вашей настройке.

Конечно, он гибок. Использование обратного прокси перед Discourse довольно тривиально — вне Docker, во всяком случае. Вам просто нужно открыть правильные порты или использовать веб-сокеты, если эти два компонента находятся на одном сервере.

Вы это сделали? Я не знаю, и мои карты не подсказали :wink:

И ещё раз — если CSP является проблемой, не используйте её, пока не разберётесь, что именно вызывает конфликт.