DiscourseConnect генерирует HTTP-редиректы даже при включённом force_https

Самым простым для меня было добавить дополнительный лейбл в app.yml в Discourse, чтобы указать Traefik добавлять заголовок X-Forwarded-Proto: https, однако nginx затем перезаписывал этот параметр своей собственной версией.

Здесь также играет роль конфигурация nginx в Discourse:

В этом месте Discourse пытается определить протокол исходя из исходного запроса (в моей конфигурации это всегда обычный текст, так как именно такой запрос отправляет Traefik). Затем, основываясь на этом, он несколько раз устанавливает заголовок X-Forwarded-Proto.

В итоге я отредактировал свой файл containers/app.yml, чтобы жестко задать эти заголовки значением https:

run:
  - exec: echo "Beginning of custom commands"
  ## Если вы хотите установить адрес электронной почты 'From' для вашей первой регистрации, раскомментируйте и измените:
  ## После получения первого письма о регистрации раскомментируйте строку обратно. Выполнять это нужно только один раз.
  # - exec: rails r "SiteSetting.notification_email='no-reply@forum.cabana.network'"
  - replace:
     filename: "/etc/nginx/conf.d/discourse.conf"
     from: /# attempt to preserve the proto, must be in http context\nmap \$http_x_forwarded_proto \$thescheme {\n  default \$scheme;\n  "~https\$" https;\n\}/
     to: |
       # force https scheme so Discourse generates HTTPs links and redirects (ie, `/login`)
  - replace:
     filename: "/etc/nginx/conf.d/discourse.conf"
     from: "$thescheme"
     global: "true"
     to: "https"
  - exec: echo "End of custom commands"

Еще раз подчеркну: я считаю, что если существует настройка force_https, то само приложение Discourse (Rails) должно её учитывать, независимо от того, как обрабатывают это обратный прокси или другие компоненты.