Настройка HTTP/2 для 1С-Битрикс

Наша компания занимается разработкой, поддержкой и обслуживанием решений на Битрикс и Битрикс24 любой сложности. От простых одностраничных сайтов до сложных интернет магазинов, CRM систем с интеграцией 1С и телефонии. Опыт разработчиков подтвержден сертификатами от вендора.
Предлагаемые услуги
Показано 1 из 1 услугВсе 1626 услуг
Настройка HTTP/2 для 1С-Битрикс
Простая
~1 рабочий день
Часто задаваемые вопросы
Наши компетенции:
Этапы разработки
Последние работы
  • image_website-b2b-advance_0.png
    Разработка сайта компании B2B ADVANCE
    1177
  • image_bitrix-bitrix-24-1c_fixper_448_0.png
    Разработка веб-сайта для компании ФИКСПЕР
    811
  • 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
    564
  • image_bitrix-bitrix-24-1c_mirsanbel_458_0.webp
    Разработка на базе 1С Предприятие для компании МИРСАНБЕЛ
    747
  • image_crm_dolbimby_434_0.webp
    Разработка сайта на CRM Битрикс24 для компании DOLBIMBY
    655
  • image_crm_technotorgcomplex_453_0.webp
    Разработка на базе Битрикс24 для компании ТЕХНОТОРГКОМПЛЕКС
    976

Настройка HTTP/2 для 1С-Битрикс

Страница Битрикс при HTTP/1.1 открывает 6–8 параллельных TCP-соединений к одному домену и грузит JS и CSS последовательно внутри каждого. При 30–40 ресурсах на странице — это очередь ожидания. HTTP/2 мультиплексирует все запросы в одном соединении: браузер запрашивает 40 файлов одновременно, сервер отвечает без задержки подключения. На практике — 200–400 мс экономии на TTI (Time to Interactive).

Требования для HTTP/2

HTTP/2 работает только поверх TLS в браузерах (технически протокол допускает h2c — без шифрования, но ни один браузер это не поддерживает). Значит, нужен валидный SSL-сертификат.

Nginx поддерживает HTTP/2 начиная с версии 1.9.5. Проверить:

nginx -V 2>&1 | grep "http_v2"
# Должно быть: --with-http_v2_module

OpenSSL должен поддерживать ALPN:

nginx -V 2>&1 | grep "openssl"
openssl version
# 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 для критических ресурсов

HTTP/2 Server Push позволяет серверу отправить CSS и JS до того, как браузер разберёт HTML и запросит их сам. Для Битрикс это имеет смысл для главного CSS и основного JS-бандла.

В конфиге Nginx для Битрикс (предполагаем стандартную структуру /bitrix/):

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:

// В начале шаблона сайта, до вывода HTML
header('Link: </bitrix/templates/.default/styles.css>; rel=preload; as=style', false);
header('Link: </bitrix/js/main/core/core.js>; rel=preload; as=script', false);

Nginx при включённом http2_push_preload on автоматически преобразует Link: rel=preload заголовки в Server Push.

Оптимизация буферов для HTTP/2

HTTP/2 мультиплексирует потоки в одном TCP-соединении, что меняет поведение буферизации:

http {
    # Для HTTP/2 можно уменьшить количество воркеров на подключение
    # HTTP/2 keepalive дольше держит соединение
    keepalive_timeout 65;

    # Размер initial window для HTTP/2
    http2_chunk_size 8k;

    # Максимум одновременных потоков (запросов) в одном соединении
    http2_max_concurrent_streams 128;

    # Буферы для заголовков (HTTP/2 сжимает заголовки через HPACK)
    http2_recv_buffer_size 256k;
}

Проверка работы HTTP/2

# Через curl
curl -I --http2 https://example.ru/
# В ответе должно быть: HTTP/2 200

# Детально с negotiation
curl -v --http2 https://example.ru/ 2>&1 | grep -E "HTTP/|ALPN"

# Chrome DevTools → Network → Protocol column: h2

Битрикс и CDN с HTTP/2

Если статика отдаётся через CDN (Cloudflare, собственный), убедиться что CDN поддерживает HTTP/2 между браузером и CDN. Соединение CDN → origin может быть HTTP/1.1 — это нормально, узкое место обычно браузер → CDN.

Типовая проблема: Mixed Content

После перехода на HTTPS + HTTP/2 Битрикс может генерировать ссылки вида http://... для статики. Это блокируется браузером как Mixed Content. Проверить в dbconn.php:

$_SERVER["HTTPS"] = "on";
define("SITE_SERVER_NAME", "example.ru");

И в настройках главного модуля Битрикс — «Использовать защищённое соединение (https)».