Невозможно включить DiscourseID на сайте, где отключено принудительное HTTPS

Для контекста: мой тестовый сайт Discourse работает в контейнере Proxmox за Nginx (npmplus) на другом сервере в той же сети (но не в той же подсети). Ничего особенного. Я пытался включить force-https, но постоянно получал множество ошибок валидации CSRF, поэтому просто отключил его снова, так как это не стоило борьбы. Независимо от всего этого, сайт отлично работает по https, поскольку Nginx и Cloudflare правильно настроены для этого:

Я только что попытался включить DiscourseID на сайте, но получил ошибку:


Есть ли обходной путь, который не требует многочасовой борьбы с npmplus, чтобы валидация CSRF в Discourse перестала ругаться на всё подряд? Эта тема не для отладки npmplus или SSL, я просто хочу исправить Discourse ID.

Сообщение об ошибке «Discourse ID returned» указывает на то, что Redirect URI сайта должен использовать https, поэтому необходимо включить force_https либо иным образом указать в конфигурации вашего прокси, что запросы поступают через https.

За исключением всего остального, что не работает:

5 лайков

Хм, похоже, я никогда этого не замечал. Как я уже говорил, я пытался включить force_https, но при выполнении любых действий постоянно возникали ошибки CSRF. Возможно, обычные переменные nginx просто не работают в npmplus (согласно инструкциям, указанным прямо выше), потому что я использовал следующую конфигурацию:

Кроме того, порт 443 на моём CT не отвечал, поэтому соединение всё ещё осуществляется локально через порт 80.

Вам следует исправить настройку обратного прокси и обеспечить корректную работу HTTPS.

4 лайка

Сейчас проблема, кажется, кроется в странном поведении переменных, которые экспонирует npmplus. У меня раньше была рабочая конфигурация, но я её потерял и пока не совсем уверен, что делать. Я остановился на следующем варианте, но не хочу включать настройку, пока не буду на 100% уверен, что она сработает, чтобы избежать ошибки BAD CSRF и необходимости снова лезть в консоль Rails для исправления.



Интересно, что, похоже, отклоняется только трафик через порт 443, что, как мне кажется, не нормально, хотя прокси в данный момент настроен на порт 80.

Невозможно разыменовать этот указатель — я полагаю, вы говорите о контейнере Discourse?

force_https не влияет на то, работает ли Discourse на порту 443 (HTTPS); он лишь указывает Discourse, что следует считать, что к нему всегда обращаются через https.

4 лайка