После установки Discourse (2.7.0.beta1) и импорта старых постов из Google Groups я добавил конфигурацию ключа и ведра S3 (но без URL CDN) и выполнил команду:
rake uploads:migrate_to_s3
которая, казалось, работала отлично. Все изображения были загружены в S3, и Discourse пытался получить к ним доступ через автоматически сгенерированный URL S3 — что-то вроде:
https://ortus-discourse.s3.dualstack.us-west-2.amazonaws.com/original/1X/75747ca17a3ca01f298f836691e1990916bafccb.png
Затем я переименовал ведро (в ortus-discourse-uploads) и настроил дистрибуцию Cloudfront перед ним с CNAME, сконфигурированным через Cloudflare:
https://communitycdn.ortussolutions.com/
CNAME, Cloudfront и S3 работают отлично. URL-адреса вроде этого корректно отображают одно из изображений в ведре:
https://communitycdn.ortussolutions.com/original/1X/75747ca17a3ca01f298f836691e1990916bafccb.png
Однако проблема в том, что Discourse полностью застрял на старом домене ortus-discourse.s3.dualstack.us-west-2.amazonaws.com (который не работает из-за переименования ведра), и сколько бы раз я ни пересобирал контейнер или не перепаковывал старые посты, я никак не могу заставить Discourse использовать новый URL CDN. Я искал в Google целый день, перепаковал, наверное, с десяток раз (внутри контейнера app) с различными настройками. На каждом форуме дают один и тот же совет — пересобрать и перепаковать, но это не работает.
Поломаны не только изображения в постах: даже тег <link rel="icon" type="image/png" href=""> и логотип сайта застряли на старом домене и не используют URL CDN S3.
Вот мои текущие настройки S3:
DISCOURSE_S3_ACCESS_KEY_ID: '********'
DISCOURSE_S3_SECRET_ACCESS_KEY: '******'
DISCOURSE_BACKUP_LOCATION: 's3'
DISCOURSE_ENABLE_S3_UPLOADS: true
DISCOURSE_S3_BUCKET: 'ortus-discourse-uploads'
DISCOURSE_S3_UPLOAD_BUCKET: 'ortus-discourse-uploads'
DISCOURSE_S3_BACKUP_BUCKET: 'ortus-discourse-backups'
DISCOURSE_S3_REGION: 'us-west-2'
DISCOURSE_S3_CDN_URL: https://communitycdn.ortussolutions.com
DISCOURSE_CDN_URL: https://community.ortussolutions.com
Я даже пробовал перемапить старый URL на новый в постах так:
rake posts:remap["ortus-discourse.s3.dualstack.us-west-2.amazonaws.com","communitycdn.ortussolutions.com"]
но команда сообщила, что ни один пост не был затронут.
Ни в одной из переменных окружения или настроек базы данных у меня нет ссылок на старое имя ведра ortus-discourse, поэтому я не могу понять, откуда Discourse продолжает брать это имя. Я новичок в Discourse и не разработчик на Ruby, поэтому не копался глубже того, что вижу в файле app.yml, в административном интерфейсе и в выводе команд rake, которые нашел на форумах.