Налаштування HTTP/2 для 1С-Бітрікс

Наша компанія займається розробкою, підтримкою та обслуговуванням рішень на Бітрікс та Бітрікс24 будь-якої складності. Від простих односторінкових сайтів до складних інтернет-магазинів, CRM систем з інтеграцією 1С та телефонії. Досвід розробників підтверджено сертифікатами від вендора.
Пропоновані послуги
Показано 1 з 1 послугУсі 1626 послуг
Налаштування HTTP/2 для 1С-Бітрікс
Проста
~1 робочий день
Часті питання

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

Етапи розробки

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

  • image_website-b2b-advance_0.png
    Розробка сайту компанії B2B ADVANCE
    1262
  • image_bitrix-bitrix-24-1c_fixper_448_0.png
    Розробка веб-сайту для компанії ФІКСПЕР
    851
  • 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
    585
  • image_bitrix-bitrix-24-1c_mirsanbel_458_0.webp
    Розробка на базі 1С Підприємство для компанії МИРСАНБЕЛ
    751
  • image_crm_dolbimby_434_0.webp
    Розробка сайту на CRM Бітрікс24 для компанії DOLBIMBY
    657
  • image_crm_technotorgcomplex_453_0.webp
    Розробка на базі Бітрікс24 для компанії ТЕХНОТОРГКОМПЛЕКС
    989

Налаштування HTTP/2 для 1С-Bitrix

Сторінка Bitrix при 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 та запросить їх сам. Для Bitrix це має сенс для основного CSS та основного JS-бандла.

У конфігу Nginx для Bitrix (припускаючи стандартну структуру /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

Bitrix та CDN з HTTP/2

Якщо статика віддається через CDN (Cloudflare, власний), переконайтесь, що CDN підтримує HTTP/2 між браузером та CDN. З'єднання CDN → origin може бути HTTP/1.1 — це нормально, вузьке місце зазвичай браузер → CDN.

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

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

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

І в налаштуваннях головного модуля Bitrix — «Використовувати захищене з'єднання (https)».