Run other websites on the same machine as Discourse

Итак, вы хотите разместить Discourse в подпапке (префикс пути), а не на поддомене?

1 лайк

Круто. Звучит именно так, как я искал. Спасибо.

1 лайк

Как мне попасть сюда?? То есть, как найти эту часть?? Там два набора одинаковых строк! Какие из них нужно редактировать или изменять??

РЕДАКТИРОВАНИЕ отсюда:

Забудьте, приятель ..! Спасибо за ваше время! Я разобрался сам :upside_down_face:

Кстати, ваш способ не совсем работает.

2 лайка

Вам также нужно настроить переменные окружения, по крайней мере в Discourse 3.

Откройте ваш app.yml

и найдите переменные окружения, затем заполните их.

Спасибо за это.
Я сначала настроил Discourse в автономном режиме, и страница регистрации корректно отображалась по HTTP. Затем я установил nginx, но без сертификата, так как использую его в тестовой лаборатории без доступа к Let’s Encrypt. Теперь я вижу страницу регистрации, но без стилей. В логах nginx на хосте я вижу ошибки 404. Есть ли какие-то идеи, как это исправить?
Спасибо.
Решено: мне нужно закомментировать строку try_files $uri $uri/ =404;, которая является настройкой по умолчанию в Debian 11 и nginx 18.0-6.

1 лайк

Ошибки. После настройки этого Chrome отображает ошибки:

Смешанный контент: страница по адресу '<URL>' была загружена через HTTPS, но запросила небезопасный шрифт '<URL>'. Этот запрос был заблокирован; содержимое должно предоставляться через HTTPS.

1 лайк

Вы включили force_https?

1 лайк

Да, я сделал это на этапе certbot --nginx. И я пробовал много раз, не сработало.

Вам нужно настроить параметр force_https в Discourse, а не в nginx. Лучше всего сделать это через переменную окружения, но вы также можете изменить это в интерфейсе управления, если у вас есть доступ к разделу «Администрирование/Настройки».

2 лайка

Я выполнил шаги, описанные выше, и успешно запустил nginx, но при переходе по URL получил ошибку ERR_TOO_MANY_REDIRECTS.



Не могли бы вы помочь мне понять, в чём причина?

Ошибка привязки (bind) к unix:/shared/nginx.http.sock (95: Операция не поддерживается)

Я запутался: я не могу запустить /discourse-setup, так как устанавливаю его на существующий веб-сервер, но мне нужно отредактировать файл .yml, который не создаётся, пока я не запущу /discourse-setup. Значит, app.yml не существует, так как же я могу его отредактировать?

Скопируйте standalone.yml из директории samples.

Чувствую себя идиотом: прочитал этот пост двадцать раз и упустил, что в последней строке этого раздела сказано «Добавлено». Могу я предложить @riking изменить введение следующим образом:

1 лайк

Я внес предложенное изменение (и удалил посты о том, является ли это вики, что, по-видимому, не позволяет вам редактировать из-за вашего уровня доверия — извините за это). Это незаметное изменение, но я думаю, что оно может помочь другим. Спасибо.

2 лайка

У меня немного другая конфигурация: мой обратный прокси работает не на хост-машине, а в отдельном контейнере Docker.
В данный момент я использую сеть Docker для соединения этих двух компонентов, поэтому Discourse не открывается через unix-сокет.

Работает отлично, но есть существенный недостаток: ограничение скорости видит только IP-адрес обратного прокси и поэтому ошибочно ограничивает скорость самого обратного прокси…

Я вижу несколько вариантов:

  1. Удалить шаблон ограничения скорости. (Не лучший вариант…)
  2. Создать свой собственный шаблон, который настроит nginx на использование set_real_ip_from для обратного прокси.
  3. Изменить шаблон ограничения скорости, чтобы использовать $http_x_forwarded_for вместо $binary_remote_addr.
  4. Открыть unix-сокет в контейнере обратного прокси. (Не знаю, возможно ли это и как.)

В идеале я не хотел бы создавать свой собственный шаблон или изменять существующие, а использовать стандартную конфигурацию как можно ближе к оригиналу, то есть вариант 4.

Есть какие-то идеи? Плюсы и минусы? Мнения?

Понимаю, что у вас эта проблема возникла давно, но я столкнулся с ней сегодня вечером и нашел решение, которое мне помогло.

Моя проблема заключалась в том, что мой регистратор выступал в роли прокси с настройками SSL/TLS, установленными в режим «Гибкий» (Flexible). Переключение на режим «Полный» (Full) сразу же решило проблему — жаль только, что я не додумался до этого раньше, прежде чем пересобирать всё около 20 раз.

1 лайк

Что подразумевается под установкой с двумя контейнерами? Спасибо.

1 лайк

Контейнер — это концепция Docker, представляющая собой изолированную вычислительную единицу, которая может иметь независимую конфигурацию от операционной системы.

Обычно Discourse и все его зависимости (при стандартной установке) работают в одном контейнере.

Существуют более сложные варианты установки, где другие сервисы могут работать в отдельном контейнере, и даже такие, где Discourse разделён на два контейнера (один для базы данных, другой для веб-части) — это называется «установка в два контейнера».

Обратите внимание: Discourse использует собственный специализированный запускатор, который не совсем идентичен стандартному запуску в Docker.

5 лайков

У меня вопрос: если обратный прокси находится в отдельном контейнере Docker, может ли он всё ещё использовать Unix-сокеты?