Как включить HTTP/2.0 в Nginx
HTTP/2 — новейший стандарт протокола HTTP, преемник HTTP/1.1. Он становится все более популярным благодаря преимуществам, которые он приносит веб-разработчикам и пользователям в целом. Он обеспечивает оптимизированный транспорт для семантики HTTP, поддерживая все основные функции HTTP/1.1, но стремится быть более эффективным во многих отношениях.
В дополнение к HTTP/2 имеется множество функций, которые дают вам больше возможностей для оптимизации веб-сайта/приложения. Он предлагает истинное мультиплексирование и параллелизм, лучшее сжатие заголовков (двоичное кодирование), лучшую приоритизацию, лучшие механизмы управления потоком данных и новый режим взаимодействия под названием «server push», который позволяет серверу отправлять ответы клиенту. . Не говоря уже о том, что HTTP/2 основан на экспериментальном протоколе Google SPDY.
Таким образом, основная задача HTTP/2 – сократить общее время загрузки веб-страницы и тем самым повысить производительность. В нем также основное внимание уделяется использованию ресурсов сети и сервера, а также безопасности, поскольку при использовании HTTP/2 шифрование SSL/TLS является обязательным.
В этой статье вы узнаете, как включить Nginx с поддержкой HTTP/2 на серверах Linux.
Предпосылки:
- Рабочая установка NGINX версии 1.9.5 или выше, созданная с помощью модуля ngx_http_v2_module.
- Убедитесь, что ваш сайт использует сертификат SSL/TLS. Если у вас его нет, вы можете получить его от Let’s Encrypt или использовать самозаверяющий сертификат.
Вы можете установить NGINX или развернуть его с помощью стека LEMP, как описано в следующих руководствах:
- Как установить Nginx на CentOS 8
- Как установить сервер LEMP на CentOS 8
- Как установить NGINX, MySQL/MariaDB и PHP на RHEL 8
- Как установить стек LEMP с помощью PhpMyAdmin в Ubuntu 20.04
- Установите Nginx с серверными блоками (виртуальными хостами) в Debian 10
- Как использовать Nginx в качестве балансировщика нагрузки HTTP в Linux
Как включить HTTP/2.0 в NGINX
Если у вас установлен NGINX, убедитесь, что он был собран с помощью модуля ngx_http_v2_module
, выполнив следующую команду.
strings /usr/sbin/nginx | grep _module | grep -v configure| sort | grep ngx_http_v2_module
Если у вас есть веб-сайт/приложение, обслуживаемое NGINX с настроенным HTTPS, откройте файл блока виртуального сервера вашего веб-сайта (или виртуального хоста) для редактирование.
vi /etc/nginx/conf.d/example.com.conf [On CentOS/RHEL]
sudo nano /etc/nginx/sites-available/example.com.conf [On Ubuntu/Debian]
Вы можете включить поддержку HTTP/2, просто добавив параметр http2
ко всем директивам listen
, как показано на следующем снимке экрана.
listen 443 ssl http2;
Пример конфигурации блока сервера выглядит следующим образом.
server {
server_name example.com www.example.com;
access_log /var/log/nginx/example.com_access.log;
error_log /var/log/nginx/example.com_error.log;
listen [::]:443 ssl ipv6only=on http2; # managed by Certbot
listen 443 ssl http2; # managed by Certbot
ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem; # managed by Certbot
ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem; # managed by Certbot
include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot
}
Сохраните изменения в файле и закройте его.
Затем проверьте синтаксис конфигурации NGINX, если он в порядке, перезапустите службу Nginx.
nginx -t
systemctl restart nginx
Затем откройте веб-браузер и проверьте, обслуживается ли ваш сайт через HTTP/2.
http://www.example.com
Чтобы получить доступ к заголовкам HTTP, щелкните правой кнопкой мыши отображаемую веб-страницу, выберите Проверить в списке параметров, чтобы открыть инструменты разработчика, затем щелкните вкладку Сеть и перезагрузите компьютер. страница.
В разделе Протоколы выберите тот, который используется на вашем сайте (если вы не видите заголовок «Протоколы», щелкните правой кнопкой мыши любой из заголовков, например Имя, а затем отметьте <Имя).Протокол из списка, чтобы отобразить его в виде заголовка).
Если ваш сайт работает на HTTP/1.1, в разделе Протокол вы увидите http/1.1, как показано на следующем снимке экрана.
Если он работает на HTTP/2, в разделе Протокол вы увидите h2
, как показано на следующем снимке экрана. Возможно, вы захотите отключить кеш браузера, чтобы просматривать последний контент, передаваемый непосредственно с веб-сервера.
Вот и все! Дополнительную информацию см. в документации модуля ngx_http_v2_module. Не стесняйтесь задавать вопросы через форму обратной связи ниже.