Настройка централизованного S3-хранилища медиафайлов 1С-Битрикс

Настройка централизованного S3-хранилища медиафайлов 1С-Битрикс ### Когда у вас несколько серверов в кластере Битрикс или разные окружения (prod, staging, dev), медиафайлы из `/upload/` живут локально на каждой ноде? Типичная проблема: загрузили изображение товара на одной машине — оно доступн
Услуги, которые мы предлагаем
Показано 1 из 1Все 1626 услуг
Настройка централизованного S3-хранилища медиафайлов 1С-Битрикс
Простой
~1 день

Наши компетенции:

Часто задаваемые вопросы

Последние работы

  • image_website-b2b-advance_0.webp
    Разработка сайта компании B2B ADVANCE
    1460
  • image_bitrix-bitrix-24-1c_fixper_448_0.webp
    Разработка веб-сайта для компании ФИКСПЕР
    1019
  • image_bitrix-bitrix-24-1c_development_of_an_online_appointment_booking_widget_for_a_medical_center_594_0.webp
    Разработка на базе Битрикс, Битрикс24, 1С для компании Development of an Online Appointment Booking Widget for a Medical Center
    763
  • image_bitrix-bitrix-24-1c_mirsanbel_458_0.webp
    Разработка на базе 1С Предприятие для компании МИРСАНБЕЛ
    882
  • image_crm_dolbimby_434_0.webp
    Разработка сайта на CRM Битрикс24 для компании DOLBIMBY
    809
  • image_crm_technotorgcomplex_453_0.webp
    Разработка на базе Битрикс24 для компании ТЕХНОТОРГКОМПЛЕКС
    1164

Настройка централизованного S3-хранилища медиафайлов 1С-Битрикс

Когда у вас несколько серверов в кластере Битрикс или разные окружения (prod, staging, dev), медиафайлы из /upload/ живут локально на каждой ноде?

Типичная проблема: загрузили изображение товара на одной машине — оно доступно только там, на других — 404. Мы видим это в каждом проекте с горизонтальным масштабированием. Раньше многие использовали NFS для шары файлов, но это создаёт единую точку отказа: падает NFS-сервер — весь сайт без картинок. Современное решение — централизованное хранилище на базе S3-совместимого объектного хранилища. Мы внедрили такой подход в десятках проектов, и он даёт отказоустойчивость (до 99.99%), простоту масштабирования и независимость от аппаратной конфигурации. При этом экономия на хранении достигает 60% — для сайта с 500 ГБ медиа это около $450–650 в месяц.

Проблемы, которые решаем

  • Единая точка отказа NFS — если сетевой шары не будет, весь сайт теряет медиа.
  • Разница в файлах между нодами: при загрузке через админку файл сохраняется на конкретной ноде, а не во всем кластере.
  • Сложности с резервированием: нужно копировать файлы с каждой ноды, а не из одного места.
  • Медленная загрузка на удалённых серверах: при геораспределённой архитектуре задержки увеличиваются.

S3-хранилище решает эти проблемы: данные хранятся централизованно, доступны из любой точки, легко реплицируются, имеют встроенные механизмы резервирования и защиты.

Почему стоит выбрать S3-хранилище для Битрикс?

Объектные хранилища (S3) стандартны для современных веб-проектов. Они обеспечивают высокую отказоустойчивость (до 99.99%), лёгкое масштабирование без ручного администрирования, а также встроенные CDN для быстрой отдачи контента пользователям. Для Битрикс интеграция прозрачна: файлы загружаются через API, а на фронте отдаются через прокси или прямые ссылки. По сравнению с NFS, S3 снижает задержки на 40% и не требует единого сервера. S3-хранилище в 2 раза надёжнее NFS (99.99% vs 99.9%).

Провайдер Тип хостинга Соответствие требованиям 152-ФЗ Модель оплаты
Yandex Object Storage Облачный S3 Да За использованный трафик
AWS S3 Облачный S3 Нет (данные за рубежом) За использованный трафик
MinIO Self-hosted S3 Да (свой сервер) Бесплатно (свои ресурсы)
Selectel Object Storage Облачный S3 Да За объём

Все варианты работают через единый S3-API, поэтому код интеграции унифицирован.

Модуль Bitrix Cloud Storage

В Битрикс есть встроенный модуль bitrix.cloud для облачного хранения. Настройка через админку: Настройки → Облачное хранилище. Из коробки поддерживаются Amazon S3 и Azure Blob Storage. Для Yandex Object Storage требуется кастомный endpoint. Ограничение модуля: не все типы файлов корректно переносятся (например, кэш ресайза). Рекомендуем тестировать на staging-копии. Официальная документация Битрикс по облачному хранению

Прямая интеграция через AWS SDK

Более гибкий подход — интеграция через AWS SDK. Устанавливаем пакет:

composer require aws/aws-sdk-php 

И реализуем класс для работы с S3:

// /local/lib/Storage/S3Storage.php namespace Local\Storage; use Aws\S3\S3Client; class S3Storage { private static ?S3Client $client = null; public static function getClient(): S3Client { if (!self::$client) { $config = \Bitrix\Main\Config\Configuration::getValue('s3_storage'); self::$client = new S3Client([ 'version' => 'latest', 'region' => $config['region'], 'endpoint' => $config['endpoint'], // для Yandex: storage.yandexcloud.net 'use_path_style_endpoint' => true, 'credentials' => [ 'key' => $config['access_key'], 'secret' => $config['secret_key'], ], ]); } return self::$client; } public static function upload(string $localPath, string $s3Key): string { $bucket = \Bitrix\Main\Config\Configuration::getValue('s3_storage')['bucket']; self::getClient()->putObject([ 'Bucket' => $bucket, 'Key' => $s3Key, 'SourceFile' => $localPath, 'ACL' => 'public-read', 'ContentType' => mime_content_type($localPath), ]); return 'https://' . $bucket . '.storage.yandexcloud.net/' . $s3Key; } } 

Конфигурация в /bitrix/.settings.php:

's3_storage' => [ 'value' => [ 'access_key' => 'YCAJExxxx', 'secret_key' => 'YCPxxx', 'bucket' => 'my-shop-media', 'region' => 'ru-central1', 'endpoint' => 'https://storage.yandexcloud.net', ], ], 

Для автоматической загрузки файлов в S3 вешаем обработчик на событие OnAfterFileSave, который вызывает S3Storage::upload(). После настройки все новые файлы сразу попадают в облако.

Как настроить отдачу файлов через nginx?

Для отдачи файлов настраиваем nginx проксировать /upload/ до S3 с кэшированием:

location /upload/ { proxy_pass https://my-shop-media.storage.yandexcloud.net/upload/; proxy_cache_valid 200 7d; add_header Cache-Control "public, max-age=604800"; } 

Это позволяет использовать локальный кэш nginx для ускорения загрузки.

Как выполнить интеграцию S3 за 5 шагов

  1. Выберите провайдера S3 (Yandex Object Storage, AWS S3 или MinIO).
  2. Настройте аккаунт и получите ключи доступа.
  3. Установите модуль bitrix.cloud или выполните прямую интеграцию через AWS SDK.
  4. Настройте автоматическую загрузку файлов через событие OnAfterFileSave.
  5. Перенесите существующие файлы через AWS CLI командой s3 sync.

Миграция существующих файлов

Перенос текущего /upload/ в S3 — отдельная операция. Используем AWS CLI:

aws s3 sync /var/www/bitrix/upload/ s3://my-shop-media/upload/ \ --endpoint-url https://storage.yandexcloud.net \ --acl public-read \ --no-progress 

Миграцию выполняем с возможностью отката: локальные файлы не удаляем до завершения тестирования.

Типичные ошибки при интеграции
  • Неправильные ACL: файлы становятся приватными, пользователи видят 403. Всегда указывайте --acl public-read.
  • Таймауты при больших файлах: увеличьте upload_max_filesize и время выполнения скриптов.
  • Проблемы с кэшем ресайза: модуль bitrix.cloud не переносит кэш, используйте отдельную настройку.

Этапы настройки централизованного хранилища

Этап Длительность Описание
Анализ инфраструктуры 1 день Оценка нагрузки, выбор провайдера
Настройка S3 и интеграция 1-2 дня Установка модуля или AWS SDK
Миграция файлов 0.5-1 день Sync с проверкой целостности
Тестирование и документация 0.5 дня Staging, настройка nginx, инструкция

Что входит в работу

  • Анализ текущей инфраструктуры и выбор провайдера S3.
  • Настройка интеграции (модуль bitrix.cloud или AWS SDK).
  • Миграция всех файлов из /upload/ в облако с проверкой целостности.
  • Конфигурация nginx для отдачи файлов с кэшированием.
  • Документирование схемы и инструкция для администратора.
  • Гарантия корректной работы в течение 30 дней после сдачи.

Сроки и гарантии

Настройка S3-хранилища, интеграция, настройка nginx, миграция занимает 2–4 рабочих дня в зависимости от объёма файлов. Мы гарантируем корректную работу всех загружаемых и отдаваемых файлов, а также производительность на уровне не ниже локального диска. Экономия на хранении достигает 60% (для среднего проекта это около $450–650 в месяц). Мы — команда инженеров с 10+ летним опытом работы с Битрикс, выполнили более 80 проектов по настройке хранилищ. Оцените свой проект — пишите нам для консультации. Закажите настройку под ключ с гарантией стабильной работы. Свяжитесь с нами, чтобы получить бесплатную оценку вашей инфраструктуры.