http2

В Nginx http2 поддерживается начиная с версии 1.9.5. При сборке требуется использовать opennsl версии 1.0.2, в противном случае браузер не будет воспринимать HTTP2. Часто в существующих инсталяциях используются более ранние версии и начинать приходится с обновления Nginx.

 

Перед подобными операциями всегда стоит делать копии конфигурационных файлов:

cp -R /etc/nginx /opt/nginx_orig

 

Обновление выполняется одной командой:

apt-get update && apt-get install nginx

 

Если в подключенных репозиториях более свежей версии нет, может потребоваться альтернативный.

 

 

Nginx http2 и включение протокола

Когда имеется в наличии Nginx нужной версии http2 включается очень просто. Название протокола дописывается в директиве listen конфигурационного файла. Ниже пример для случая если рабочим конфигурационным файлом является example:

 

mcedit /etc/nginx/sites-enabled/example

server {
listen 443 ssl http2;
server_name example.com;

}

 

Затем веб-сервер перезапускается

nginx -s reload

На этом настройка завершена, дополнительно ничего не требуется.

 

 

Проверка http2

Проверить доступен ли сайт по HTTP2 можно используя curl

curl -I —http2 http://example.com

 

Если в выводе присутствует только строка curl: (1) Unsupported protocol — поддержки протокола нет со стороны утилиты и требуется обновление curl, инструкции для каждой системы можно без труда найти в сети. Например, для Ubuntu 16.04

 

 

Другим вариантом могут быть онлайн сервисы, позволяющие выполнять такую проверку или, что проще всего, браузер. В инструментах разработчика нужно включить отображение поля «Protocol» и обновить страницу сайта

nginx http2



Браузер покажет используется http1.1 или http2

 

Отличия HTTP/2 от HTTP1.1

Мультиплексирование

В отличие от HTTP1.1 для каждого запроса не нужно открывать новое TCP соединение. В рамках одного соединения могут передаваться множество файлов. Это значительно снижает количество трафика, передаваемого между клиентом и сервером, увеличивает скорость, а также полностью меняет принципы оптимизации веб-сайтов.

Так, с HTTP2 стили правильнее не объединять в один большой файл style.css, а разделять на несколько документов. Этот же подход актуален для изображений и JS.

 

Можно назначать приоритеты — например, отдавать HTML, затем PNG, потом Javascript

 

Шифрование

Возможно использование только защищенного соединения

 

Сжатие HTTP заголовков

С каждым запросом требуется передавать меньше данных, что отражается на скорости

 

Серверная инициализация (server push):

Стандартом считается ситуация при которой сервер ожидает запроса от браузера (реактивное поведение).  С HTTP2 сервер может сам посылать запросы и помещать в браузерный кэш необходимые данные. Когда они будут запрошены пользователем — контент отдастся максимально быстро.

 

Читайте про то, как установить SSL сертификат на Nginx.