Как отредактировать nginx/discourse.conf
Считаю, что любые изменения в discourse.conf внутри контейнера всё равно будут отменены при выполнении пересборки.
Чтобы сохранить изменения, их необходимо каким-то образом добавить в конфигурацию вашего контейнера — например, в web_only.yml:
# […]
## Помните, это синтаксис YAML — у вас может быть только один блок с данным именем
run:
- exec: echo "Начало пользовательских команд"
# […]
- replace:
filename: /etc/nginx/conf.d/discourse.conf
from: $proxy_add_x_forwarded_for
to: $http_x_real_ip
global: true
# […]
Как отладить установку Discourse в подпапке
В установке Discourse в подпапке вызов к Discourse выглядит следующим образом:
example.org/forum → [Внешний прокси для example.org] → /path-to-discourse/discourse/shared/web-only/nginx.http.sock → [Nginx в веб-контейнере Discourse]
Таким образом, если возникает ошибка, сначала необходимо определить её источник:
- Внешний прокси
- Nginx в контейнере Discourse
- Сам Discourse
Внешний прокси
- Откройте его в браузере и проверьте результат.
- Проверьте логи ошибок внешнего прокси.
Nginx в контейнере Discourse
- Подключитесь по SSH к вашему веб-серверу.
- Подключитесь напрямую к сокету через
curl. - Отладьте вывод
curlи логиNginx в контейнере Discourse.
Важно: используйте URL http, а не https.
curl -I --unix-socket /path-to-discourse/discourse/shared/web-only/nginx.http.sock http://www.example.org/forum/
Если это работает, попробуйте выполнить реальный вызов, например:
curl --unix-socket /path-to-discourse/discourse/shared/web-only/nginx.http.sock \
-H "user-agent: Chrome/88.0.4324.182" \
-H "Accept-Encoding: gzip" \
http://www.example.org/forum/t/test-thread/12345 --output test-encoded.html.gz