Оптимізація 1С-Бітрікс з HTTP/2
Уявіть: сайт на Бітрікс завантажується 4 секунди, хоча сервер потужний і кешування ввімкнено. Проблема в протоколі — HTTP/1.1 відкриває 6-8 паралельних TCP-з'єднань і завантажує ресурси послідовно. При 40+ файлах на сторінці виникає черга очікування через head-of-line blocking. HTTP/2 вирішує це мультиплексуванням: усі запити йдуть по одному TLS-з'єднанню, сервер відповідає без затримки підключення. Це знижує TTI (Time to Interactive) на 200-400 мс — реальні цифри з наших проєктів. Ми налаштовуємо HTTP/2 під ключ: аудит, конфігурація, оптимізація.
Чому HTTP/2 критичний для 1С-Бітрікс?
Бітрікс — система з величезною кількістю підключених модулів: bitrix.js, core.css, десятки скриптів у /bitrix/js/. При HTTP/1.1 кожен файл потребує свого з'єднання та повного handshake. HTTP/2 вирішує проблему мультиплексуванням. Це особливо важливо для інтернет-магазинів на Бітрікс з каталогами на 100 000+ товарів. За нашими вимірами, HTTP/2 прискорює завантаження сторінки до 2 разів порівняно з HTTP/1.1 при типовому наборі ресурсів.
| Характеристика | HTTP/1.1 | HTTP/2 |
|---|---|---|
| Число з'єднань | 6-8 на домен | 1 на домен |
| Завантаження ресурсів | Послідовне | Паралельне |
| Заголовки | Без стиснення | HPACK (стиснення) |
| Server Push | Ні | Так |
| TTI на Бітрікс | ~1.2 с (типовий) | ~0.8 с |
Як налаштувати HTTP/2: основні кроки
- Встановлення SSL-сертифіката — HTTP/2 у браузерах працює тільки через TLS.
- Перевірка версії Nginx — потрібна 1.9.5+ з модулем
http_v2. Команда:nginx -V 2>&1 | grep http_v2. - Зміна конфігурації віртуального хоста — додавання
http2уlisten 443 ssl http2;. - Налаштування Server Push — для критичних ресурсів (CSS і JS ядра Бітрікс).
- Тестування — через
curl -I --http2та Chrome DevTools.
Вимоги для HTTP/2
HTTP/2 працює тільки поверх TLS у браузерах (h2c не підтримується). Тому обов'язковий валідний SSL-сертифікат. Nginx має бути зібраний з модулем http_v2:
nginx -V 2>&1 | grep "http_v2" # Має бути: --with-http_v2_module OpenSSL потрібна версія 1.0.2+ для ALPN.
Конфігурація Nginx для HTTP/2
У конфігу віртуального хоста:
server { listen 443 ssl http2; listen [::]:443 ssl http2; server_name example.ru www.example.ru; ssl_certificate /etc/ssl/certs/example.ru.crt; ssl_certificate_key /etc/ssl/private/example.ru.key; # Сучасні cipher suites (HTTP/2 забороняє застарілі) ssl_protocols TLSv1.2 TLSv1.3; ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384; ssl_prefer_server_ciphers off; # HSTS add_header Strict-Transport-Security "max-age=63072000" always; # Оптимізація TLS ssl_session_cache shared:SSL:10m; ssl_session_timeout 1d; ssl_session_tickets off; root /var/www/bitrix/public_html; index index.php; } # Редирект HTTP -> HTTPS server { listen 80; server_name example.ru www.example.ru; return 301 https://$host$request_uri; } Як працює Server Push і навіщо він Бітрікс?
Server Push дозволяє серверу надіслати CSS і JS до того, як браузер їх запитає. Для Бітрікс це має сенс для головного CSS та основного JS-бандла. На одному проєкті з каталогом на 200 000 товарів ми через Server Push знизили TTI з 1.7 с до 0.6 с. Налаштування в Nginx:
location = / { http2_push /bitrix/templates/.default/styles.css; http2_push /bitrix/js/main/core/core.js; http2_push /bitrix/themes/.default/icons/sm/logo.png; } Або через заголовки Link з PHP при ввімкненому http2_push_preload on.
Рекомендовані налаштування Nginx для HTTP/2
| Параметр | Рекомендоване значення | Пояснення |
|---|---|---|
| keepalive_timeout | 65 | Таймаут keep-alive |
| http2_chunk_size | 8k | Розмір фрейму даних |
| http2_max_concurrent_streams | 128 | Максимум одночасних потоків |
| http2_recv_buffer_size | 256k | Розмір буфера прийому |
Перевірка роботи HTTP/2
curl -I --http2 https://example.ru/ # Очікуємо: HTTP/2 200 У Chrome DevTools колонка Protocol має показувати h2.
Типова проблема: Mixed Content
Після переходу на HTTPS + HTTP/2 Бітрікс може генерувати посилання http://.... Це блокується браузером. Перевірте dbconn.php:
$_SERVER["HTTPS"] = "on"; define("SITE_SERVER_NAME", "example.ru"); І в налаштуваннях головного модуля позначте «Використовувати захищене з'єднання (https)».
Порівняння з HTTP/1.1
HTTP/2 дає приріст швидкості в 2-4 рази при великій кількості файлів. Для Бітрікс це особливо актуально: типова сторінка містить 30-50 ресурсів. З HTTP/2 час до першого інтерактивного стану скорочується на 200-400 мс, що позитивно впливає на SEO та конверсію.
Що входить у налаштування HTTP/2 під ключ
- Аудит поточної конфігурації сервера та сайту (Nginx, PHP, Бітрікс).
- Встановлення або валідація SSL-сертифіката (включаючи ланцюжок).
- Налаштування віртуального хоста з HTTP/2, сучасними cipher suites та HSTS.
- Оптимізація Server Push для критичних ресурсів (core.css, core.js).
- Перевірка Mixed Content та виправлення посилань у налаштуваннях Бітрікс.
- Тестування продуктивності: замір TTI до та після.
- Документація щодо конфігурації та рекомендації з моніторингу.
Терміни: від 1 дня до 5 днів залежно від складності та кількості хостів. Вартість розраховується індивідуально після аудиту.
Чому варто замовити налаштування у нас?
Ми налаштовували HTTP/2 для Бітрікс-проєктів з навантаженням до 50 000 відвідувачів на добу. Досвід — понад 5 років і 80+ проєктів. Гарантуємо сумісність з усіма актуальними версіями Nginx та PHP. Замовте аудит — отримайте консультацію та розрахунок вартості протягом дня. Зв'яжіться з нами для деталей.
RFC 7540 — HTTP/2 HTTP/2 на Wikipedia







