Пользовательские эмодзи, загруженные из S3/R2, обходят маршрутизацию CDN

Вау, какое приключение! Я в основном перенастроил всё своё хранилище объектов Cloudflare R2 и экземпляр Discourse, и, думаю, этот баг действительно относится к R2. Когда я исправил запись DNS Cloudflare и пересобрал экземпляр так, чтобы DISCOURSE_CDN_URL действительно указывал на него, это сломало кучу других вещей, таких как строки перевода, и вызвало множество ошибок в консоли, включая некоторые ошибки CORS. Это увело меня сегодня по многим кроличьим норам. Так что, похоже, использование DISCOURSE_CDN_URL несовместимо с Cloudflare R2. (это было очень странно — когда я изначально настраивал свою исходную запись DNS, я неверно ввёл запись DNS cdn.mysite.com так, что она резолвилась как cdn.mysite.com.mysite.com). Правильная настройка DISCOURSE_CDN_URL кажется несовместимой с хранилищем объектов Cloudflare R2. Возможно, здесь есть что-то ещё, что я не до конца понимаю.

В любом случае, когда я пересобрал с веткой моего PR, всё исправилось, потому что оно оборачивает присваивание в Discourse.store.cdn_url(), чтобы загрузки пользовательских эмодзи подчинялись той же логике маршрутизации и резервного копирования S3 CDN, что и стандартные загрузки изображений в постах.

Я повторно открыл PR и отредактировал описание. Но, думаю, если команда Discourse решит не объединить его, это нормально, потому что компонент темы исправляет проблему на клиентском уровне. Обратите внимание, что исправление в PR должно влиять только на конфигурации хранилища объектов R2 для пользовательских эмодзи, а не на другие обычные S3-совместимые, такие как AWS.

2 лайка