Бесконечная загрузка из-за Cloudflare

Предполагаю, что само название «Cloudflare Automatic HTTPS Rewrites» может ввести в заблуждение. У Cloudflare есть две функции:

  • «Always Use HTTPS» перенаправляет все обычные HTTP-запросы на HTTPS, точно так же, как это делает force_https в Discourse. Обе функции ранее были включены, и я отключил обе, чтобы проверить, связана ли проблема с HTTPS или с бесконечной загрузкой страниц Discourse и зависанием запросов curl. Это сработало отлично, даже полностью устранив проблему для HTTPS-запросов, но только потому, что я одновременно отключил «Cloudflare Automatic HTTPS Rewrites».
  • «Cloudflare Automatic HTTPS Rewrites» изменяет HTML-, CSS- и JavaScript-документы, заменяя все встроенные обычные HTTP-URL-адреса на их HTTPS-варианты, если Cloudflare считает, что хост доступен через HTTPS (на основе списка предварительной загрузки HSTS и т.п.). Это делается во избежание предупреждений о смешанном содержимом.

Принудительное использование HTTPS или его отсутствие на уровне Cloudflare, прокси-сервера хоста или Discourse не имеет значения. Причиной проблемы стала комбинация фильтра mod_sed на прокси-сервере хоста и встроенных правок обычных HTTP-адресов со стороны Cloudflare. То есть контент документов проходил через фильтр на двух этапах. Проблема заключалась не в том, что происходило фактическое изменение содержимого (на нашем сайте нет смешанного содержимого, поэтому «Cloudflare Automatic HTTPS Rewrites» на самом деле не меняет тело документа), а, вероятно, была связана с фрагментами, буфером или таймингом.