// Веб-разработка

Как настроить HTTP/2 на Nginx и Apache: полное руководство для высокой производительности — CLIQHOST

08 октября 2026 г. · by Alex M.

Как настроить HTTP/2 на Nginx и Apache: полное руководство для высокой производительности — CLIQHOST

HTTP/2 — это современная версия протокола HTTP, принятая в 2015 году и поддерживаемая сегодня всеми основными браузерами. По сравнению с HTTP/1.1, он предлагает значительные улучшения: мультиплексирование запросов, сжатие заголовков (HPACK), Server Push и приоритизацию ресурсов. Практический результат: ваш сайт загружается быстрее, с меньшим временем ожидания и меньшими накладными расходами на соединение.

В этом руководстве вы узнаете, как включить и настроить HTTP/2 на Nginx и Apache на сервере Linux (Ubuntu 22.04 / Debian 12), а также как проверить корректность работы. Если у вас есть VPS NVMe от CLIQHOST или выделенный сервер, вы можете применить шаги ниже напрямую.


Почему HTTP/2 важен для вашего сайта?

Прежде чем перейти к настройке, стоит понять конкретные отличия от предшественника:

Характеристика 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. Проверьте версию Nginx

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

2. Активируйте HTTP/2 в блоке 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. Проверьте документацию вашей версии.

3. Проверьте и перезагрузите конфигурацию

sudo nginx -t
sudo systemctl reload nginx

4. Дополнительные оптимизации HTTP/2 для 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

HTTP/2 на Apache

1. Предварительные требования

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.

2. Переключите MPM на event

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

3. Активируйте модуль mod_http2

sudo a2enmod http2

4. Настройте VirtualHost

Откройте файл конфигурации сайта:

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 = запасной вариант.

5. Проверьте и перезапустите Apache

sudo apache2ctl configtest
sudo systemctl restart apache2

6. Дополнительные оптимизации HTTP/2 для Apache

Добавьте в 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

Как проверить, что HTTP/2 работает?

Метод 1: curl

curl -I --http2 https://example.com

В выводе ищите:

HTTP/2 200

Метод 2: Инструменты браузера

В Chrome/Firefox откройте DevTools → Network, добавьте столбец «Protocol» (правая кнопка мыши на заголовке столбца). HTTP/2 запросы отображаются как h2.

Метод 3: Онлайн-сервис

Используйте https://tools.keycdn.com/http2-test — введите домен и подтвердите поддержку HTTP/2.

Метод 4: nghttp2

sudo apt install nghttp2-client -y
nghttp -nv https://example.com 2>&1 | grep "The negotiated protocol"
# The negotiated protocol: h2

Распространённые проблемы и решения

HTTP/2 не активируется на Apache

  • Частая причина: активен MPM prefork. Проверьте: apachectl -V | grep MPM. Если видите prefork, выполните шаги выше для переключения на event.
  • mod_ssl не активен: выполните sudo a2enmod ssl и перезапустите Apache.
  • Слишком старый OpenSSL: HTTP/2 требует TLS 1.2+ с ALPN. Проверьте: openssl version.

Nginx игнорирует директиву http2

  • Проверьте, что файл конфигурации корректно включён в nginx.conf.
  • Убедитесь, что нет другого блока server, слушающего на порту 443 без http2.

WordPress не получает преимуществ от HTTP/2

Если ваш сайт работает на WordPress хостинге CLIQHOST, HTTP/2 может быть уже активен на уровне сервера. Проверьте с помощью curl, как показано выше. На VPS SSD у вас полный контроль для применения всех настроек из этого руководства.


HTTP/2 на cPanel / Shared Hosting

Если вы используете shared hosting cPanel от CLIQHOST, активация HTTP/2 выполняется на уровне сервера — не из вашего аккаунта cPanel. Свяжитесь с командой поддержки CLIQHOST, чтобы узнать, активирован ли HTTP/2 на вашем сервере.

На наших серверах cPanel HTTP/2 включён по умолчанию для всех планов хостинга с активным SSL.


HTTP/3 / QUIC — следующий шаг

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 по запросу.


Итоговый чеклист: HTTP/2 настроен правильно

  • Действительный и активный SSL-сертификат
  • Nginx: директива http2 присутствует в listen 443
  • Apache: активен MPM event, mod_http2 включён, Protocols h2 http/1.1 в VirtualHost
  • Настроен TLS 1.2 или 1.3 (без TLS 1.0 / 1.1)
  • Проверено через curl -I --http2 — ответ HTTP/2 200
  • Server Push настроен для критических ресурсов (опционально, но рекомендуется)
  • Параллельно активировано сжатие Gzip / Brotli

Заключение

HTTP/2 сегодня является базовым требованием для любого производительного сайта. Его активация на Nginx или Apache занимает менее 15 минут и даёт реальный прирост скорости, особенно для сайтов с большим количеством статических ресурсов.

Если вы хотите воспользоваться уже оптимизированной средой без лишних хлопот, изучите планы VPS NVMe CLIQHOST с быстрыми SSD и щедрой пропускной способностью, или ознакомьтесь с нашими услугами администрирования серверов, если предпочитаете доверить технические настройки нам.

Для получения дополнительных практических руководств по оптимизации веб-серверов посетите блог CLIQHOST.

SHARE
// what clients say

What Our Clients Say

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."

AM
Andrei M.
eCommerce owner · Chișinău
★★★★★

"Migrated 12 client sites to CLIQHOST. Free migration, zero downtime, and the cPanel setup is exactly what my team needed. Highly recommend."

EV
Elena V.
Web agency · Bălți
★★★★★

"Our NVMe VPS handles traffic spikes without a sweat. Full root, local datacenter, and billing in MDL — everything we wanted from a provider."

DC
Dmitri C.
SaaS founder · Chișinău