Почему адрес иконки — localhost, когда я использую IP в качестве имени хоста

Я установил версию Discourse для разработки на CentOS 7.7, следуя руководству «Руководство для начинающих по установке Discourse для разработки с использованием Docker» (102009).

Шаги настройки:

  1. Получить исходный код из репозитория discourse.git
  2. Изменить настройки отправителя электронной почты в файле config/discourse_default.conf
  3. Выполнить команду ./d/boot-env --init
  4. Запустить ./d/unicorn

Хостнейм установлен как IP-адрес, например: 10.201.0.115
Я могу получить доступ к Discourse по адресу 10.201.0.115:9292
Однако все изображения не отображаются.

Ошибка загрузки ресурса: net::ERR_CONNECTION_REFUSED с адреса http://localhost:9292/images/discourse-logo-sketch.png
Но я могу получить PNG-файл по адресу http://10.201.0.115:9292/images/discourse-logo-sketch.png.

Кроме того, иконка ответа также не загружается.
Я понимаю, что причина в том, что URL должен указывать на IP-адрес 10.201.0.115, а не на localhost.

Что мне нужно настроить? Вопрос касается IP-адреса.

Заранее спасибо всем, кто поможет.

можешь помочь мне @pfaffman
очень тебе благодарен!

Мое решение — использовать localhost на порту 3000. Это то, что я рекомендую.

Большое спасибо.
Вы имеете в виду, что ваш сайт не опубликован для других пользователей.
Но мы используем Discourse в нашей компании, и люди могут получить доступ к сайту через локальную сеть компании.
Что мне делать в такой ситуации?

@pfaffman
вы имеете в виду, что мне нужно лишь настроить DISCOURSE_HOSTNAME=localhost в app.yml?
нужно ли что-то ещё?
можете привести пример правильной конфигурации?

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

Если вы хотите использовать Discourse, следуйте официальной стандартной инструкции по установке Discourse.

Окей, большое спасибо!
Но я установил другую версию по тому же адресу, который вы мне дали, используя discourse_docker.git вместо discourse.git.
Проблема в том, что мы не можем использовать порт 80, так как он уже занят другим сайтом.
Нам нужно использовать другой порт вместо 80.
Мы изменили порт на 28080, и основной сайт Discourse стал доступен.
Но возникла новая проблема: адреса иконок или PNG-файлов не используют новый порт 28080, они пытаются получить файлы по IP-адресу без порта, и, как вы понимаете, это невозможно.
Правильный URL для PNG: http://10.120.0.115:28080/some.png
Неправильный URL для PNG: http://10.120.0.115/some.png
Что мне делать, если мы используем другой порт вместо 80?
@Falco @pfaffman
Жду вашего ответа.

Discourse должен работать на стандартных веб-портах 80/443. Если вы не можете настроить Discourse для прослушивания этих портов напрямую, следует настроить обратный прокси для перенаправления трафика с этих портов на Discourse, предпочтительно используя поддомен.

Большое спасибо!
Я также использую обратный прокси Nginx,
и возникла новая проблема.

Я запускаю docker run напрямую.
/usr/bin/docker run --shm-size=512m -d --restart=always -e LANG=en_US.UTF-8 -e RAILS_ENV=production -e UNICORN_WORKERS=8 -e UNICORN_SIDEKIQS=1 -e RUBY_GLOBAL_METHOD_CACHE_SIZE=131072 -e RUBY_GC_HEAP_GROWTH_MAX_SLOTS=40000 -e RUBY_GC_HEAP_INIT_SLOTS=400000 -e RUBY_GC_HEAP_OLDOBJECT_LIMIT_FACTOR=1.5 -e DISCOURSE_DB_SOCKET= -e DISCOURSE_DB_HOST=10.201.0.116 -e DISCOURSE_DB_PORT=5432 -e LC_ALL=en_US.UTF-8 -e LANGUAGE=en_US.UTF-8 -e DISCOURSE_HOSTNAME=10.201.0.115 -e DISCOURSE_DEVELOPER_EMAILS=sheoixoet@gmail.com -e DISCOURSE_SMTP_ADDRESS=smtp.gmail.com -e DISCOURSE_SMTP_PORT=587 -e DISCOURSE_SMTP_USER_NAME=sheoixoet -e DISCOURSE_SMTP_PASSWORD=wpjedgfoiibrbffe -e DISCOURSE_SMTP_ENABLE_START_TLS=true -e DISCOURSE_SMTP_AUTHENTICATION=login -e DISCOURSE_SMTP_OPENSSL_VERIFY_MODE=none -e DISCOURSE_DB_NAME=discourse -e DISCOURSE_DB_USERNAME=postgres -e DISCOURSE_DB_PASSWORD=wetrwet@26 -h wetwrigp93-app --name app -t -p 28080:80 -v /var/discourse/shared/standalone:/shared -v /var/discourse/shared/standalone/log/var-log:/var/log --mac-address 02:3a:0a:b4:ce:e9 --privileged local_discourse/app /sbin/boot

Проблема в следующем:
в браузере статус blocked (CSP)?
Что мне делать?
Спасибо.

@Falco @pfaffman
Я решил проблему CSP.
Но появилась новая:
Я изменил порт по умолчанию с 80 на 28080,
но адреса PNG не используют новый порт:
http://10.202.63.38/uploads/default/original/1X/3f10e1453ee931ddb6a9f5ab59d9e4578959fc33.jpeg
Это неверный адрес.
Правильный должен быть таким:
http://10.202.63.38:28080/uploads/default/original/1X/3f10e1453ee931ddb6a9f5ab59d9e4578959fc33.jpeg
Как заставить веб-сервер использовать новый порт?
Спасибо!

Я с радостью помогу. Пожалуйста, посмотрите Redirecting…

Но я почти уверен, что вам уже говорили, что нельзя использовать нестандартный порт.

Большое спасибо!
Как вы и сказали, мы должны использовать порт 80, именно это нам и предстоит сделать.

Опять же, вам нужен домен, даже если этот домен указывает на 10.202.63.38. Я уверен, что Джей сможет помочь с настройкой; вам, вероятно, придется поговорить с корпоративным IT-отделом :slight_smile:

Спасибо за вашу помощь! :grinning: