Диск на сервере заканчивается. Или нужно разнести несколько серверов и синхронизировать загруженные файлы между ними. Перенос /upload/ в S3-совместимое хранилище (MinIO, Selectel, VK Cloud, Cloudflare R2) решает обе задачи — но только если настроить правильно, иначе Битрикс начнёт записывать пути к файлам некорректно. Мы часто видим проекты, где после переноса ломаются ссылки на изображения или падает производительность из-за неверной адресации бакета. Наш опыт работы с Битрикс — более 10 лет, мы настраивали S3 для проектов с каталогами на 100 000+ товаров, и знаем все подводные камни. Для быстрой и безопасной настройки свяжитесь с нами.
Почему стоит перенести файлы в S3?
Локальный диск — это узкое горлышко. Он ограничен по объёму, не масштабируется и требует ручного мониторинга. S3-хранилище даёт практически неограниченное пространство, автоматическую репликацию и доступ через API. Для Битрикс это особенно актуально, если сайт работает в кластере — все серверы видят единую файловую систему без NFS-кошмаров. S3-хранилище в 2-3 раза дешевле локального SSD, а скорость загрузки не уступает при правильной настройке CDN.
Сравнение локального хранения и S3:
| Параметр | Локальный диск | S3-хранилище |
|---|---|---|
| Ёмкость | Физический лимит сервера | От нескольких ТБ до петабайт |
| Отказоустойчивость | Зависит от RAID | Автоматическая репликация в разные зоны |
| Скорость для новых файлов | Ограничена IOPS диска | Зависит от провайдера, обычно 100+ МБ/с |
| Цена за 1 ТБ | ~$50/мес (SSD) | ~$20/мес (S3 стандарт) |
| Интеграция с Битрикс | Из коробки | Через модуль main.cloudstorages |
Как настроить S3-хранилище для 1С-Битрикс?
Битрикс поддерживает облачные хранилища через модуль main.cloudstorages (официальная документация на dev.1c-bitrix.ru). Он абстрагирует работу с файлами через провайдеров. Для S3-совместимых хранилищ используется провайдер amazon (совместимость на уровне API S3).
Настройка провайдера производится в /bitrix/admin/main_cloud_storage.php. Параметры для S3-совместимого хранилища:
- Endpoint URL — URL сервиса (для MinIO:
http://minio:9000, для Selectel:https://s3.selectel.ru) - Key — Access Key ID
- Secret — Secret Access Key
- Bucket — имя бакета
- Region — регион (для кастомных S3 часто
us-east-1)
Конфигурация в коде (для автоматизации настройки):
\Bitrix\Main\Config\Option::set('main', 'cloud_storage_active', 'Y'); \Bitrix\Main\Config\Option::set('main', 'cloud_storage_provider', 'amazon'); \Bitrix\Main\Config\Option::set('main', 'cloud_storage_endpoint', 'https://s3.example.com'); \Bitrix\Main\Config\Option::set('main', 'cloud_storage_access_key', 'ACCESS_KEY'); \Bitrix\Main\Config\Option::set('main', 'cloud_storage_secret_key', 'SECRET_KEY'); \Bitrix\Main\Config\Option::set('main', 'cloud_storage_bucket', 'bitrix-uploads'); \Bitrix\Main\Config\Option::set('main', 'cloud_storage_path', 'upload/'); Path style vs virtual hosted style: почему это важно
Самая частая проблема при подключении не-AWS S3 — неверная адресация бакета. AWS использует virtual hosted style: https://bucket.s3.amazonaws.com/key. Большинство S3-совместимых сервисов поддерживают path style: https://s3.example.com/bucket/key.
Стандартный модуль Битрикса использует virtual hosted style. Для сервисов, которые не поддерживают его (например, MinIO в локальной сети без wildcard DNS), нужно патчить класс провайдера /bitrix/modules/main/lib/cloudstorages/amazon.php — добавить параметр use_path_style_endpoint: true при инициализации AWS SDK:
$s3Client = new \Aws\S3\S3Client([ 'version' => 'latest', 'region' => $region, 'endpoint' => $endpoint, 'use_path_style_endpoint' => true, 'credentials' => [ 'key' => $accessKey, 'secret' => $secretKey, ], ]); Сравнение популярных S3-провайдеров для Битрикс:
| Провайдер | Endpoint | Path style | Цена за 1 ТБ/мес | Особенности |
|---|---|---|---|---|
| MinIO | http://minio:9000 |
Требуется | Бесплатно (свой сервер) | Локальная разработка, низкая задержка |
| Selectel | https://s3.selectel.ru |
Поддерживается | ~$22 | Дата-центры в РФ, SLA 99.9% |
| VK Cloud | https://hb.bizmrg.com |
Поддерживается | ~$20 | Интеграция с CDN, РФ |
| Cloudflare R2 | https://<account>.r2.cloudflarestorage.com |
Поддерживается | ~$15 | Нет платы за исходящий трафик |
Как перенести существующие файлы в S3?
После подключения хранилища Битрикс начинает загружать новые файлы в S3, но старые остаются локально. Для миграции используется встроенная утилита: /bitrix/admin/main_cloud_copy.php. Она запускает агент, который пакетами переносит файлы из /upload/ в хранилище и обновляет пути в b_file.
При переносе важно: поле SUBDIR в b_file хранит относительный путь файла. После миграции в S3 пути становятся URL-адресами бакета. Если миграция прервётся на середине, часть файлов будет в S3, часть — локально. Битрикс определяет источник файла по полю EXTERNAL_ID в b_file — если оно заполнено, файл считается облачным.
Публичный доступ и CDN
Файлы в S3 должны быть публично доступны для прямых ссылок на изображения. Настройка политики бакета (bucket policy) для публичного чтения:
{ "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Principal": "*", "Action": "s3:GetObject", "Resource": "arn:aws:s3:::bitrix-uploads/*" }] } Для подключения CDN перед бакетом (CloudFront, Cloudflare) в настройках модуля указывается параметр CDN_URL — Битрикс будет формировать публичные URL через CDN, а запись в S3 будет идти напрямую.
Что входит в услугу
Мы подключаем S3-хранилище под ключ. В работе:
- Аудит текущей инфраструктуры и расчёт нагрузки
- Настройка модуля main.cloudstorages с корректным endpoint и path style
- Миграция существующих файлов из /upload/ с проверкой целостности
- Настройка политик бакета и CDN (опционально)
- Документация по доступам и конфигурации
- Техническая поддержка на этапе внедрения
Наши инженеры сертифицированы по 1С-Битрикс и AWS. Гарантия на корректную работу файлового хранилища после переноса — если возникнут проблемы, исправляем бесплатно. Официальная документация 1С-Битрикс по облачным хранилищам.
Типичные ошибки при настройке S3
- Выбран virtual hosted style, который не поддерживается провайдером — файлы не загружаются.
- Не настроена политика бакета — пользователи видят 403 ошибки на изображения.
- Перенос выполнен без проверки b_file — пути остались локальными, файлы дублируются.
- Кэш перенесён в S3 — резкое падение производительности из-за задержек.
Сроки и стоимость
Настройка S3-хранилища занимает от 3 до 7 дней в зависимости от объёма файлов и необходимости миграции. Стоимость рассчитывается индивидуально после аудита. Оставьте заявку — мы оценим ваш проект и предложим оптимальное решение.
Закажите настройку S3-хранилища для вашего Битрикса — мы гарантируем корректную работу.
Обратитесь к нам, чтобы получить консультацию по настройке S3 для вашего Битрикс-проекта. Мы гарантируем стабильную работу файлового хранилища без сюрпризов.







