Loading...

Обучение / Хранение и доставка

Файловое хранилище CDN: отдавайте файлы с CDN без собственного origin

Чтобы разместить файлы на CDN, отдельный origin-сервер не нужен. С файловым хранилищем CDN вы загружаете файлы, изображения, дистрибутивы и медиа прямо в свой аккаунт и отдаёте их быстро с edge — по автоматическому HTTPS. Разберём, как работает файловое хранилище CDN, как пользоваться им из панели или через cdnctl CLI, и когда вместо этого стоит взять S3-совместимое object storage.

Updated

Файловое хранилище CDN: отдавайте файлы с CDN без собственного origin

Что значит «файловое хранилище CDN»

Большинство CDN работают в режиме Pull: edge держит в памяти адрес вашего существующего origin-сервера и забирает (pull) контент с него по мере запросов посетителей. Это отлично работает, если у вас уже есть сайт. Но если вам нужно просто отдавать файлы — логотип, PDF, дистрибутив, видео, собранные ассеты приложения, — поднимать и поддерживать ради них origin-сервер избыточно.

Файловое хранилище CDN устроено наоборот. Вместо того чтобы направлять CDN на ваш сервер, вы храните файлы прямо на CDN и отдаёте их с edge. CDN сам является origin. Никакого сервера, который нужно запускать, патчить или масштабировать: вы загружаете файл, получаете URL, и каждый посетитель получает файл с ближайшей edge-точки по HTTPS. Именно это имеют в виду под «отдавать файлы с CDN» или «cdn origin storage» — CDN хранит файл и доставляет его.

Вариант A — загрузка из панели (без CLI)

Самый простой способ — прямо из панели cdn.com.tr. Откройте раздел Files своего аккаунта, загрузите нужные файлы и организуйте их по папкам, как в обычном файловом менеджере. Ничего устанавливать и настраивать не нужно — загруженное сразу попадает в хранилище CDN вашего аккаунта.

После загрузки файл отдаётся через CDN по своему URL, кешируется на edge и покрыт автоматическим SSL, поэтому ссылка сразу работает по HTTPS. Этот путь подходит, когда у вас всего несколько файлов, когда хочется видеть их и управлять ими визуально, или когда вы просто не из тех, кто живёт в терминале. Для массовых загрузок, повторяющихся шагов или автоматизации быстрее использовать CLI ниже.

Вариант B — cdnctl CLI (работает как scp)

cdnctl — это операторский инструмент командной строки для cdn.com.tr, и загрузка файлов через него ощущается как scp. Сначала один раз войдите и выберите аккаунт, чтобы каждая команда знала, куда класть файлы: выполните cdnctl login --email you@example.com --password ... (или cdnctl configure --endpoint https://cdn.com.tr --token <token>, если вы используете API-токен), затем cdnctl accounts use <account_uuid>, чтобы задать аккаунт по умолчанию. После этого команды, привязанные к аккаунту, просто работают.

Для загрузки используйте cp точно как в scp — сначала локальный путь, затем удалённый: cdnctl cp ./logo.png images/logo.png положит один файл по пути images/logo.png в вашем CDN-хранилище. Добавьте -r, чтобы отправить целую директорию: cdnctl cp -r ./dist assets/ загрузит каждый файл из ./dist в assets/. Передайте --force, чтобы перезаписать уже существующие файлы. Также можно указать конкретный аккаунт прямо в команде через account_uuid:remotepath, если аккаунт по умолчанию не задан.

Если вам удобнее явные подкоманды, группа files делает то же самое и печатает JSON, который можно разобрать в скриптах: cdnctl files put --file ./logo.png --target-path images/logo.png [--force] загружает файл, cdnctl files ls [--path <path>] выводит список того, что хранится, cdnctl files mkdir --path <path> создаёт папку, а cdnctl files rm --path <path> --yes удаляет объект. Это то же хранилище, что и в панели — просто управляемое из терминала.

Когда вместо этого использовать S3-совместимое object storage

Файловое хранилище — самый простой способ разместить и отдавать статические файлы и медиа через CDN. Когда нужно больше — buckets, access keys или программная загрузка через привычные S3-инструменты, — берите S3-совместимое object storage на базе Ceph RGW.

В cdnctl вы создаёте bucket командой cdnctl object-storage buckets create --account <uuid> --name <bucket>, выводите список командой cdnctl object-storage buckets list --account <uuid> и выпускаете S3 access и secret keys командой cdnctl object-storage access-keys create --bucket <bucket_uuid>. После этого любой S3-совместимый клиент или SDK может читать и писать в bucket. Bucket также можно привязать прямо к container app, чтобы он появился как переменные окружения — cdnctl object-storage bindings create ... --env-prefix S3, — это чистый способ дать приложению собственное хранилище. Правило простое: файловое хранилище — чтобы размещать и отдавать файлы через CDN; object storage — когда нужны buckets, keys, программный/S3-доступ или хранилище, стоящее за приложением.

Отдача, кеширование и purge

Файлы, которые вы храните на CDN, отдаются с edge и кешируются там, поэтому повторные запросы обслуживаются из точки рядом с посетителем, а не идут обратно к единственному origin. Каждый отдаваемый URL получает автоматический HTTPS, так что ваши ссылки защищены без ручного управления сертификатами.

Важный момент про кеширование на edge: когда вы перезаписываете файл новой версией, старая копия ещё какое-то время может отдаваться из кеша на edge. Если вы заменили файл и изменение должно появиться сразу, сделайте purge (из панели или через API), чтобы edge забрал свежую копию. Частый способ вообще обойти эту проблему — включать версию в имя файла или путь: logo.v2.png или ассеты под хешем сборки, — тогда у новой версии новый URL, и она никогда не пересекается с закешированной.

CI и автоматизация с cdnctl

Поскольку cdnctl — это единый инструмент командной строки, который аутентифицируется токеном, он аккуратно встраивается в CI/CD. Типичный шаг сборки один раз проходит аутентификацию (cdnctl configure --endpoint https://cdn.com.tr --token <token> и cdnctl accounts use <uuid>), а затем отправляет свежесобранные ассеты: cdnctl cp -r ./dist assets/ --force. Ваш пайплайн загружает артефакты, edge их отдаёт, и вручную копировать файлы больше не нужно.

Тот же подход подходит для публикации нового дистрибутива, ротации маркетингового ассета или выкладки собранного статического сайта при каждом коммите — всё скриптуется, всё повторяемо, и никакого origin-сервера поддерживать не нужно.

Что отдают с хранилища CDN

Изображения и медиа

Размещайте логотипы, фото товаров, видео и аудио на CDN и отдавайте их быстро с edge — без media-сервера.

Дистрибутивы и релизы

Кладите инсталляторы, PDF и файлы релизов в хранилище и раздавайте быстрые HTTPS-ссылки на скачивание, которые выдерживают нагрузку.

Статические сайты и сборки

Отправляйте JS, CSS и изображения сборки из CI командой cdnctl cp -r и отдавайте весь статический бандл с edge.

FAQ по файловому хранилищу CDN

Нужен ли мне собственный сервер, чтобы отдавать файлы с CDN?

Нет. С файловым хранилищем CDN сам CDN и есть origin — вы загружаете файлы в свой аккаунт, и они отдаются с edge. Никакого origin-сервера, который нужно запускать, патчить или масштабировать, не требуется.

Как загружать файлы — через панель или командную строку?

Оба способа работают с одним и тем же хранилищем. Используйте раздел Files панели для визуальной загрузки без кода или cdnctl CLI, когда хотите автоматизировать процесс. cdnctl cp работает как scp: cdnctl cp ./logo.png images/logo.png для одного файла или cdnctl cp -r ./dist assets/ для целой папки.

В чём разница между файловым хранилищем и object storage?

Файловое хранилище — самый простой способ разместить и отдавать статические файлы и медиа через CDN. Object storage S3-совместимое: вы получаете buckets и access keys и можете пользоваться стандартными S3-инструментами или привязать bucket к приложению. Используйте файловое хранилище, чтобы отдавать файлы; object storage — когда нужны buckets, keys или программный доступ.

Я заменил файл, но всё ещё показывается старый — почему?

Отдаваемые файлы кешируются на edge, поэтому перезаписанный файл может отдавать старую копию, пока кеш не обновится. Сделайте purge файла после перезаписи или включайте версию в имя файла или путь, чтобы у новой версии был новый URL.

Ссылки на файлы отдаются по HTTPS?

Да. Файлы, отдаваемые через CDN, получают автоматический SSL, поэтому их URL всегда HTTPS и сертификат вам вручную настраивать не нужно.