Блоковое хранилище DigitalOcean против Amazon S3

Я размещаю это здесь, так как тема Configure an S3 compatible object storage provider for uploads настроена на удаление всех ответов через месяц.

Отсутствие заголовка content-encoding в реализации CDN от DigitalOcean, безусловно, неприятно, но это происходит только при установке всех параметров S3 внутри app.yml. Если эти параметры заданы в настройках сайта через веб-консоль администратора, то DO использует CDN только для загрузки S3, а ресурсы сайта по-прежнему обслуживаются из источника.

Похоже, что это сделано намеренно, так как переменная окружения DISCOURSE_S3_CDN_URL, если она установлена в app.yml, переопределяет настройку CDN и для ресурсов сайта, тогда как это же значение, указанное только в настройках сайта, не делает этого?

Это немного несогласованно, но позволяет использовать CDN от DigitalOcean только для загрузок S3, не ломая при этом сайт:

Есть два способа сделать это:

  • указать все настройки S3 только в настройках сайта
rails c
SiteSetting.s3_upload_bucket="<имя_бакета>/<папка_загрузок>"
SiteSetting.s3_backup_bucket="<имя_бакета>/<папка_резервных_копий>"
SiteSetting.enable_s3_uploads=true
SiteSetting.s3_access_key_id="<ключ>"
SiteSetting.s3_secret_access_key="<секретный_ключ>"
SiteSetting.s3_endpoint="https://<sfo2>.digitaloceanspaces.com"
SiteSetting.s3_cdn_url="https://<имя_бакета>.<sfo2>.cdn.digitaloceanspaces.com/<папка_загрузок>"
SiteSetting.backup_location="s3"
  • продублировать все настройки S3 кроме DISCOURSE_S3_CDN_URL в app.yml и указать CDN от DO в SiteSetting.s3_cdn_url
  DISCOURSE_USE_S3: true
  DISCOURSE_S3_REGION: <sfo2>
  DISCOURSE_S3_ENDPOINT: https://<sfo2>.digitaloceanspaces.com
  DISCOURSE_S3_ACCESS_KEY_ID: <ключ>
  DISCOURSE_S3_SECRET_ACCESS_KEY: <секретный_ключ>
#  DISCOURSE_S3_CDN_URL: https://<имя_бакета>.<sfo2>.cdn.digitaloceanspaces.com/<папка_загрузок>
  DISCOURSE_S3_BUCKET: <имя_бакета>/<папка_загрузок>
  DISCOURSE_S3_BACKUP_BUCKET: <имя_бакета>/<папка_резервных_копий>
  DISCOURSE_BACKUP_LOCATION: s3
rails c
SiteSetting.s3_cdn_url="https://<имя_бакета>.<sfo2>.cdn.digitaloceanspaces.com/<папка_загрузок>"

@falco, если вы согласны с этим, я могу обновить исходную тему в вики.