Получение ошибки 521 Cloudflare после обновления до 3.5.0.beta8-dev

Всем привет,

После обновления моего сайта Discourse до версии 3.5.0.beta8-dev я внезапно начал получать ошибку 521 «Web server is down» при доступе к сайту через Cloudflare. Это неожиданно, так как ранее я настроил всё согласно этому руководству, и всё работало безупречно до сих пор.

Затем я попробовал изменить режим шифрования SSL/TLS в Cloudflare с Full (Strict) на Flexible, и сайт снова загрузился.

Неужели кто-то знает, почему это может происходить после обновления?
Есть ли что-то новое в 3.5.0.beta8-dev, что могло повлиять на совместимость с Cloudflare или обработку HTTPS?

Любая помощь или предложения будут очень кстати!

Заранее спасибо!

Я использую версию 3.5.0.beta8-dev с режимом Full (strict) SSL через Cloudflare, и у меня нет никаких проблем.

Вот несколько пунктов для проверки:

  • Проверьте Let’s Encrypt — просмотрите журнал обновления и убедитесь, что всё было пересоздано корректно.
  • Проверьте любые изменения во внешнем брандмауэре (например, DigitalOcean предоставляет внешние брандмауэры).

Ошибки 521 и переключение на режим Flexible указывают на то, что ваш сервер не настроен для работы по HTTPS.

Спасибо за предложения! @LotusJeff

Я проверил свою настройку SSL: я не использую Let’s Encrypt, я создал Origin Certificate в Cloudflare и разместил ключ и сертификат здесь:

После проверки я выполнил полную пересборку. Однако, когда в Cloudflare установлен режим Full (Strict), я всё ещё получаю ошибку 521.

Для справки, вот секция шаблонов из моего файла app.yml:

templates:
  - "templates/postgres.template.yml"
  - "templates/redis.template.yml"
  - "templates/web.template.yml"
  - "templates/web.ratelimited.template.yml"
  ## Раскомментируйте эти две строки, если хотите добавить Lets Encrypt (https)
  - "templates/web.ssl.template.yml"
  # - "templates/web.letsencrypt.ssl.template.yml"
  - "templates/cloudflare.template.yml"

expose:
  - "80:80"   # http
  - "443:443" # https

Ещё раз спасибо за то, что нашли время помочь!

По памяти, сертификаты Cloudflare имеют срок действия 90 дней. Это потребует от вас создавать новые сертификаты каждые 3 месяца. Вы помните, сколько времени прошло с момента выпуска ваших текущих сертификатов?

Настройка по умолчанию — использование Let’s Encrypt. Система автоматически продлит ваши сертификаты за вас. Это избавит вас от необходимости управлять ими вручную.

Cloudflare теперь предоставляет сертификаты, действительные до 15 лет, и мой всё ещё находится в периоде действия.

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

Если я хочу вернуться к настройке по умолчанию с использованием Let’s Encrypt, достаточно ли просто:

  1. Раскомментировать эту строку в app.yml:
- "templates/web.letsencrypt.ssl.template.yml"
  1. И установить режим SSL в Cloudflare на Full?

Я никогда не переходил с частных сертификатов на Let’s Encrypt в Discourse, и, учитывая это…

В файле app.yml необходимо раскомментировать строки в двух местах:

  1. Строка шаблона для - "templates/web.letsencrypt.ssl.template.yml"
  2. Адрес электронной почты учётной записи Let’s Encrypt:
## Если вы добавили шаблон Let's Encrypt, раскомментируйте строку ниже, чтобы получить бесплатный SSL-сертификат
  LETSENCRYPT_ACCOUNT_EMAIL: <введите ваш адрес электронной почты здесь>

Если вы внесли какие-либо другие ручные изменения в шаблоны для пользовательских SSL-сертификатов, их необходимо откатить к стандартным настройкам.

Компонент Let’s Encrypt находится ближе к концу процесса пересборки приложения. Следите за ним и обратите внимание на любые коды ошибок.