08 октября 2026 г. · by Alex M.
HTTP/2 — это современная версия протокола HTTP, принятая в 2015 году и поддерживаемая сегодня всеми основными браузерами. По сравнению с HTTP/1.1, он предлагает значительные улучшения: мультиплексирование запросов, сжатие заголовков (HPACK), Server Push и приоритизацию ресурсов. Практический результат: ваш сайт загружается быстрее, с меньшим временем ожидания и меньшими накладными расходами на соединение.
В этом руководстве вы узнаете, как включить и настроить HTTP/2 на Nginx и Apache на сервере Linux (Ubuntu 22.04 / Debian 12), а также как проверить корректность работы. Если у вас есть VPS NVMe от CLIQHOST или выделенный сервер, вы можете применить шаги ниже напрямую.
Прежде чем перейти к настройке, стоит понять конкретные отличия от предшественника:
| Характеристика | HTTP/1.1 | HTTP/2 |
|---|---|---|
| Соединений на домен | 6–8 параллельных (браузер) | 1 соединение, мультиплексирование |
| Сжатие заголовков | Нет | Да (HPACK) |
| Server Push | Нет | Да |
| Формат | Текст | Бинарный |
| Задержка | Высокая (head-of-line blocking) | Низкая |
На практике сайт, который обслуживал 80 ресурсов через HTTP/1.1 с 6 параллельными соединениями, теперь может обслуживать их через одно TCP-соединение без блокировок. Эффект особенно заметен при высокой задержке (мобильные сети, международные соединения).
Важно: HTTP/2 требует обязательного использования HTTPS. Убедитесь, что у вас есть активный SSL-сертификат, прежде чем продолжать.
HTTP/2 поддерживается начиная с Nginx 1.9.5. На Ubuntu 22.04 версия из репозитория достаточна:
nginx -v
# nginx version: nginx/1.18.0 (Ubuntu)
Для последней стабильной версии добавьте официальный репозиторий Nginx:
curl -fsSL https://nginx.org/keys/nginx_signing.key | sudo gpg --dearmor -o /usr/share/keyrings/nginx.gpg
echo "deb [signed-by=/usr/share/keyrings/nginx.gpg] http://nginx.org/packages/ubuntu $(lsb_release -cs) nginx" \
| sudo tee /etc/apt/sources.list.d/nginx.list
sudo apt update && sudo apt install nginx -y
serverОткройте файл конфигурации вашего сайта:
sudo nano /etc/nginx/sites-available/example.com
Измените директиву listen следующим образом:
server {
listen 443 ssl http2;
listen [::]:443 ssl http2;
server_name example.com www.example.com;
ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers HIGH:!aNULL:!MD5;
ssl_prefer_server_ciphers on;
root /var/www/example.com/public;
index index.php index.html;
location / {
try_files $uri $uri/ =404;
}
}
server {
listen 80;
listen [::]:80;
server_name example.com www.example.com;
return 301 https://$host$request_uri;
}
В Nginx 1.25.1+ синтаксис изменился:
http2становится отдельной директивой (http2 on;), а не частьюlisten. Проверьте документацию вашей версии.
sudo nginx -t
sudo systemctl reload nginx
Добавьте в блок http в файле /etc/nginx/nginx.conf:
http {
http2_push_preload on; # активирует Server Push через заголовок Link
keepalive_timeout 65;
keepalive_requests 1000;
gzip on;
gzip_vary on;
gzip_min_length 1024;
gzip_types text/plain text/css application/json application/javascript text/xml application/xml;
}
Server Push превентивно отправляет критические ресурсы (CSS, JS) до того, как браузер их запросит. Можно активировать push для конкретного location:
location = /index.html {
http2_push /css/main.css;
http2_push /js/app.js;
}
Или через HTTP-заголовок (более гибко, управляется из приложения):
Link: </css/main.css>; rel=preload; as=style
Apache поддерживает HTTP/2 через модуль mod_http2, доступный начиная с версии 2.4.17. На Ubuntu 22.04 стандартная версия 2.4.52 — достаточна.
apache2 -v
# Server version: Apache/2.4.52 (Ubuntu)
MPM prefork (стандартный на многих системах) несовместим с HTTP/2. Вам нужно использовать MPM event или MPM worker.
sudo a2dismod mpm_prefork
sudo a2enmod mpm_event
Если вы используете PHP через mod_php, нужно перейти на PHP-FPM:
sudo apt install php8.2-fpm -y
sudo a2enmod proxy_fcgi setenvif
sudo a2enconf php8.2-fpm
sudo a2enmod http2
Откройте файл конфигурации сайта:
sudo nano /etc/apache2/sites-available/example.com-le-ssl.conf
Добавьте директиву Protocols в SSL-блок VirtualHost:
<VirtualHost *:443>
ServerName example.com
ServerAlias www.example.com
DocumentRoot /var/www/example.com/public
Protocols h2 h2c http/1.1
SSLEngine on
SSLCertificateFile /etc/letsencrypt/live/example.com/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/example.com/privkey.pem
SSLProtocol all -SSLv3 -TLSv1 -TLSv1.1
SSLCipherSuite ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256
SSLHonorCipherOrder off
SSLSessionTickets off
<Directory /var/www/example.com/public>
AllowOverride All
Require all granted
</Directory>
</VirtualHost>
<VirtualHost *:80>
ServerName example.com
Redirect permanent / https://example.com/
</VirtualHost>
h2= HTTP/2 через TLS;h2c= HTTP/2 без TLS (ограниченная поддержка браузерами);http/1.1= запасной вариант.
sudo apache2ctl configtest
sudo systemctl restart apache2
Добавьте в apache2.conf или в файл VirtualHost:
# Параметры H2
H2Direct on
H2MaxSessionStreams 100
H2StreamMaxMemSize 65536
H2WindowSize 65535
# Server Push
<FilesMatch "index\.html$">
Header add Link "</css/main.css>; rel=preload; as=style"
Header add Link "</js/app.js>; rel=preload; as=script"
</FilesMatch>
Убедитесь, что модули headers и rewrite активны:
sudo a2enmod headers rewrite
sudo systemctl reload apache2
curl -I --http2 https://example.com
В выводе ищите:
HTTP/2 200
В Chrome/Firefox откройте DevTools → Network, добавьте столбец «Protocol» (правая кнопка мыши на заголовке столбца). HTTP/2 запросы отображаются как h2.
Используйте https://tools.keycdn.com/http2-test — введите домен и подтвердите поддержку HTTP/2.
sudo apt install nghttp2-client -y
nghttp -nv https://example.com 2>&1 | grep "The negotiated protocol"
# The negotiated protocol: h2
apachectl -V | grep MPM. Если видите prefork, выполните шаги выше для переключения на event.sudo a2enmod ssl и перезапустите Apache.openssl version.nginx.conf.server, слушающего на порту 443 без http2.Если ваш сайт работает на WordPress хостинге CLIQHOST, HTTP/2 может быть уже активен на уровне сервера. Проверьте с помощью curl, как показано выше. На VPS SSD у вас полный контроль для применения всех настроек из этого руководства.
Если вы используете shared hosting cPanel от CLIQHOST, активация HTTP/2 выполняется на уровне сервера — не из вашего аккаунта cPanel. Свяжитесь с командой поддержки CLIQHOST, чтобы узнать, активирован ли HTTP/2 на вашем сервере.
На наших серверах cPanel HTTP/2 включён по умолчанию для всех планов хостинга с активным SSL.
HTTP/3 (основанный на протоколе QUIC от Google/IETF) уже поддерживается в Nginx 1.25+ и некоторых сборках Apache. В отличие от HTTP/2 (TCP), HTTP/3 использует UDP, полностью устраняя блокировки на транспортном уровне.
Активация HTTP/3 на Nginx (экспериментально):
listen 443 quic reuseport;
listen 443 ssl http2;
add_header Alt-Svc 'h3=":443"; ma=86400';
HTTP/3 требует Nginx, скомпилированного с поддержкой QUIC (--with-http_v3_module). На управляемых выделенных серверах CLIQHOST наша команда может настроить полный стек HTTP/3 по запросу.
http2 присутствует в listen 443mod_http2 включён, Protocols h2 http/1.1 в VirtualHostcurl -I --http2 — ответ HTTP/2 200HTTP/2 сегодня является базовым требованием для любого производительного сайта. Его активация на Nginx или Apache занимает менее 15 минут и даёт реальный прирост скорости, особенно для сайтов с большим количеством статических ресурсов.
Если вы хотите воспользоваться уже оптимизированной средой без лишних хлопот, изучите планы VPS NVMe CLIQHOST с быстрыми SSD и щедрой пропускной способностью, или ознакомьтесь с нашими услугами администрирования серверов, если предпочитаете доверить технические настройки нам.
Для получения дополнительных практических руководств по оптимизации веб-серверов посетите блог CLIQHOST.
Real reviews from customers who trust CLIQHOST for performance, reliability and expert technical support.
"We moved our online shop from a foreign host and the difference is night and day — pages load instantly and support replies in minutes, in Romanian."
"Migrated 12 client sites to CLIQHOST. Free migration, zero downtime, and the cPanel setup is exactly what my team needed. Highly recommend."
"Our NVMe VPS handles traffic spikes without a sweat. Full root, local datacenter, and billing in MDL — everything we wanted from a provider."