Оптимизация 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







