Як увімкнути HTTP/2 на хостингу
HTTP/2 дозволяє браузеру завантажувати багато файлів одночасно одним зʼєднанням, а не чергою, тож сторінки з великою кількістю CSS, JS і зображень відкриваються помітно швидше, особливо в мобільних мережах. Його підтримують усі сучасні браузери, і більшість хостингів уже має його, проте багато сайтів досі відповідають по HTTP/1.1 через особливості налаштування. Перевірка на цій сторінці підключається так само, як браузер, і показує, на який протокол насправді погодився сервер, тож почніть із неї, перш ніж щось змінювати.
Перевірте свій сайт
-
Перевірте, яким протоколом сайт працює зараз
Запустіть перевірку на цій сторінці для свого домену і подивіться рядок протоколу. HTTP/2 означає, що цей гайд вам не потрібен. HTTP/1.1 означає, що сервер або щось перед ним не запропонував HTTP/2 під час зʼєднання. Перевірка домовляється про HTTP/2 через TLS так само, як браузер; HTTP/3 оголошується окремо через заголовок Alt-Svc і тут не тестується.
-
Переконайтеся, що сайт працює на HTTPS
Браузери використовують HTTP/2 лише в зашифрованих зʼєднаннях, де протокол узгоджується під час TLS-рукостискання (ALPN). Сайт на звичайному http:// у браузері завжди лишається на HTTP/1.1, хоч би що підтримував сервер. Якщо кінцева адреса в перевірці починається з http://, спершу налаштуйте сертифікат і переадресацію на HTTPS.
-
На спільному хостингу просіть, а не налаштовуйте
HTTP/2 вмикається в головній конфігурації сервера, а не в .htaccess, тож жоден рядок у .htaccess його не ввімкне. На хостингу з LiteSpeed або з nginx попереду він зазвичай увімкнений для всіх сайтів. Якщо перевірка показує HTTP/1.1 на HTTPS, напишіть у підтримку й додайте результат: на сучасному сервері це одна зміна конфігурації з їхнього боку, а хостинг, що взагалі його не пропонує, працює на застарілому серверному ПЗ.
-
На власному сервері з Apache
Підключіть mod_http2 і додайте Protocols h2 http/1.1 у головну конфігурацію сервера або в HTTPS-віртуальний хост, потім перезапустіть Apache. Використовуйте MPM event: документація Apache попереджає, що з prefork HTTP/2 працює лише з суттєвими обмеженнями, а prefork досі стоїть за замовчуванням на деяких конфігураціях із mod_php, тож перехід може вимагати й перенесення PHP на PHP-FPM.
-
На власному сервері з nginx
Увімкніть його в блоці server, що слухає 443: у nginx 1.25.1 і новіших директивою http2 on;, у старіших версіях додавши http2 у рядок listen, listen 443 ssl http2;. Перевірте конфігурацію командою nginx -t і перезавантажте. Якщо кілька блоків server ділять ту саму IP і порт, увімкніть HTTP/2 однаково в усіх, щоб уникнути несподіванок.
-
За CDN
Якщо перед сайтом стоїть CDN на кшталт Cloudflare, відвідувачі спілкуються з CDN по HTTP/2 чи HTTP/3, які там зазвичай увімкнені за замовчуванням, незалежно від того, що підтримує ваш сервер. Перевірка на цій сторінці тоді показує протокол CDN. Зʼєднання між CDN і вашим сервером - окреме питання, і на швидкість сторінки воно впливає набагато менше.
Як перевірити результат
Після зміни знову запустіть перевірку на цій сторінці: у рядку протоколу має бути HTTP/2. У Chrome можна також відкрити DevTools, вкладку Network, клацнути правою кнопкою на заголовках стовпців, увімкнути Protocol і перезавантажити сторінку: ваші файли мають показувати h2. Якщо перевірка досі показує HTTP/1.1, щось перед сервером, проксі чи балансувальник, завершує TLS-зʼєднання, і HTTP/2 треба увімкнути й там.
Порада: HTTP/2 перетворює деякі старі прийоми прискорення на баласт: більше немає сенсу зливати весь CSS в один файл, а розкидання файлів по додаткових доменах (domain sharding) працює проти нього, бо кожен додатковий домен вимагає окремого зʼєднання. І повільний бекенд він не виправить: HTTP/2 прискорює доставку файлів, а не час, за який сервер будує сторінку (TTFB).