В данном руководстве мы расскажем, как активировать протокол HTTP/2 с помощью Nginx на сервере Debian 8 для повышения скорости загрузки веб-страниц. Вам понадобится выполнить два условия.
- Nginx версии 1.9.5 или новее, скомпилированный с использованием OpenSSL 1.0.2.
- Активированный HTTPS
Давайте рассмотрим их по одному.
Содержание статьи
Установка Nginx из репозитория Backports для Jessie.
ALPN (Negotiation of Application Layer Protocols) — это дополнение к TLS, которое даёт возможность серверам согласовывать использование протокола HTTP/2 с веб-браузерами. В отсутствии ALPN установка соединения по протоколу HTTP/2 невозможна, даже если и сервер, и браузер поддерживают этот протокол. Поддержка ALPN в библиотеке OpenSSL доступна, начиная с версии 1.0.2.
Debian 8 поставляется с OpenSSL версии 1.0.1. Чтобы узнать текущую версию OpenSSL, выполните команду:
openssl version
Имейте в виду, что установка OpenSSL 1.0.2 на систему не является обязательной. Нам нужен только Nginx версии 1.9.5 или новее, который должен быть собран с использованием OpenSSL 1.0.2. Поддержка HTTP/2 была внедрена в Nginx начиная с версии 1.9.5. В стандартном репозитории Debian 8 доступна версия Nginx 1.6.2. Однако репозиторий Jessie Backports предлагает Nginx 1.10.3, собранный с OpenSSL 1.0.2l.
Для того чтобы подключить этот репозиторий, необходимо создать файл со списком источников.
sudo nano /etc/apt/sources. list. d/jessie-backports. list
Вставьте следующую строку в данный файл.
deb http://ftp. debian. org/debian jessie-backports main
Сохраните изменения в файле и закройте его. После этого обновите индекс пакетов и установите Nginx из репозитория Jessie Backports.
sudo apt update sudo apt - t jessie-backports install nginx
Убедитесь в актуальности версии Nginx и настройте необходимые параметры.
sudo nginx - V
nginx version: nginx/1.10.3построен с использованиемOpenSSL версии 1.0.2l 25 May 2017 поддержка TLS SNI включена
Репозиторий Nginx. org предлагает актуальную версию Nginx для Debian 8. Однако этот пакет основан на OpenSSL 1.0.1, что делает невозможным использование поддержки ALPN.
Инсталляция SSL-сертификата на Debian 8.
Мы можем настроить бесплатный SSL-сертификат от Let’s Encrypt. В первую очередь необходимо установить клиент Let’s Encrypt (Certbot) на Debian 8 из репозитория Jessie Backports. Плагин Python-certbot-nginx предназначен для работы с Nginx и используется вместе с Certbot.
sudo apt install - t jessie-backports certbot python-certbot-nginx
Если вы уже настроили виртуальный хост в Nginx, примените плагин Nginx для получения и установки SSL-сертификата, следуя приведённым ниже инструкциям.
Имейте в виду, что для корректной работы может потребоваться очистка кэша браузера, так как кэшированные данные могут неверно распознаваться с использованием протокола HTTP/1.1. HTTP/2 предлагает возможность, известную как server push, которая дает веб-серверу возможность отправлять ресурсы, не запрашиваемые веб-браузером, но необходимые для загрузки страниц. К примеру, когда веб-браузер запрашивает HTML-документ, веб-сервер может заранее определить, что клиенту потребуется связанный CSS-файл, и отправляет его вместе с HTML-документом. Это позволяет избежать дополнительного запроса на CSS, тем самым сокращая количество обращений к серверу. В качестве примера я привожу WordPress. Для создания сайта на этой платформе обычно требуются следующие ресурсы. Для того чтобы отправить эти ресурсы клиентам, включите указанные директивы в блок сервера. Не забудьте заменить twentyseventeen на название вашей темы WordPress. Сохраните файл и закройте его. После этого перезапустите Nginx, чтобы применить изменения. Учтите, что для удаления номера версии из CSS и JavaScript файлов WordPress вам следует внести указанный код в файл functions.php. Если номер версии останется, функция server push не будет функционировать при обновлении WordPress. В Google Chrome откройте нужную вам страницу, затем нажмите сочетание клавиш Ctrl+Shift+I, чтобы запустить инструменты разработчика, и перейдите на вкладку «Сеть». После этого обновите страницу, нажав F5. На скриншоте ниже можно увидеть, как работает серверный пуш на одном из моих сайтов. Если вы заметите надпись «из кэша памяти», кликните по ней правой кнопкой мыши, очистите кэш браузера и обновите страницу. Плагин Certbot для Nginx пока не достиг достаточной зрелости. После применения плагина Nginx я получил оценку B на тесте SSL Labs из-за использования неустойчивых параметров обмена ключами. Генератор SSL-конфигураций от Mozilla является отличным инструментом, который поможет вам создать актуальные SSL-настройки. Вот и подошли к завершению! Надеюсь, что данный учебник был полезен для вас в настройке HTTP/2 с Nginx на Debian 8. Если вам понравился этот пост, не забудьте подписаться на нашу бесплатную рассылку новостей! Вот и всё! Надеюсь, этот гайд оказался полезным для вас при активации HTTP/2 с помощью Nginx на сервере.sudo certbot --nginx --agree-tos - d example.com--перенаправить --скрепка-ocsp --обязательно-скрепить --электронная почтаваш-адрес-электронной-почты
Как активировать Server Push
http2_push /wp-content/themes/twentyseventeen/style. css; http2_push /wp-includes/js/jquery/jquery. js; http2_push /wp-includes/js/jquery/jquery-migrate. min. js; http2_push /wp-includes/js/wp-embed. min. js;sudo systemctl restart nginxПроверка функции Server Push
Улучшения

