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

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

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

Часті запитання

Останні роботи

  • image_website-b2b-advance_0.webp
    Розробка сайту компанії B2B ADVANCE
    1458
  • 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
    761
  • image_bitrix-bitrix-24-1c_mirsanbel_458_0.webp
    Розробка на базі 1С Підприємство для компанії МИРСАНБЕЛ
    879
  • image_crm_dolbimby_434_0.webp
    Розробка сайту на CRM Бітрікс24 для компанії DOLBIMBY
    804
  • image_crm_technotorgcomplex_453_0.webp
    Розробка на базі Бітрікс24 для компанії ТЕХНОТОРГКОМПЛЕКС
    1162

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

Проблема

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

Типова проблема: завантажили зображення товару на одній машині — воно доступне тільки там, на інших — 404. Ми бачимо це в кожному проєкті з горизонтальним масштабуванням. Раніше багато хто використовував NFS для шари файлів, але це створює єдину точку відмови: падає NFS-сервер — весь сайт без картинок. Сучасне рішення — централізоване сховище на базі S3-сумісного об'єктного сховища. Ми впровадили такий підхід у десятках проєктів, і він дає відмовостійкість (до 99.99%), простоту масштабування та незалежність від апаратної конфігурації. При цьому економія на зберіганні сягає 60% — для сайту з 500 ГБ медіа це близько 50 000 гривень на місяць.

Які проблеми вирішує S3-сховище?

  • Єдина точка відмови NFS — якщо мережевої шари не буде, весь сайт втрачає медіа.
  • Різниця у файлах між нодами: при завантаженні через адмінку файл зберігається на конкретній ноді, а не у всьому кластері.
  • Складності з резервуванням: потрібно копіювати файли з кожної ноди, а не з одного місця.
  • Повільне завантаження на віддалених серверах: при георозподіленій архітектурі затримки збільшуються.

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

Чому варто обрати S3? Порівняння з NFS

Об'єктні сховища (S3) стандартні для сучасних веб-проєктів. Вони забезпечують високу відмовостійкість (до 99.99%), легке масштабування без ручного адміністрування, а також вбудовані CDN для швидкої віддачі контенту користувачам. Для Бітрікс інтеграція прозора: файли завантажуються через API, а на фронті віддаються через проксі або прямі посилання. S3-сховище вдвічі надійніше за NFS (99.99% vs 99.9%) і знижує затримки на 40% — це означає, що S3 працює в 1.67 рази швидше за NFS на віддалених з'єднаннях. Крім того, S3 не потребує єдиного сервера, що усуває single point of failure.

Провайдер Тип хостингу Відповідність вимогам 152-ФЗ Модель оплати
Yandex Object Storage Хмарний S3 Так За використаний трафік
AWS S3 Хмарний S3 Ні (дані за кордоном) За використаний трафік
MinIO Self-hosted S3 Так (свій сервер) Безкоштовно (свої ресурси)
Selectel Object Storage Хмарний S3 Так За обсяг

Усі варіанти працюють через єдиний S3-API, тому код інтеграції уніфікований. Для безпеки використовуються сигнатурні (HMAC) запити та IAM-політики, що обмежують доступ до бакетів.

Варіанти інтеграції

Модуль Bitrix Cloud Storage

У Бітрікс є вбудований модуль bitrix.cloud для хмарного зберігання. Налаштування через адмінку: Налаштування → Хмарне сховище. З коробки підтримуються Amazon S3 та Azure Blob Storage. Для Yandex Object Storage потрібен кастомний endpoint. Обмеження модуля: не всі типи файлів коректно переносяться (наприклад, кеш ресайзу). Рекомендуємо тестувати на staging-копії. Офіційна документація Бітрікс з хмарного зберігання: https://helpdesk.bitrix24.ru/open/11153794/

Пряма інтеграція через 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 для прискорення завантаження.

Практична реалізація

Інтеграція за 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% (для середнього проєкту це близько 50 000 гривень на місяць). Ми — команда інженерів з 10+ річним досвідом роботи з Бітрікс, виконали понад 80 проєктів з налаштування сховищ і працюємо на ринку вже 5 років. Оцініть свій проєкт — пишіть нам для консультації. Замовте налаштування під ключ з гарантією стабільної роботи. Зв'яжіться з нами, щоб отримати безкоштовну оцінку вашої інфраструктури.