HTTP/2 — это вторая версия сетевого протокола http, включающая в себя множество различных улучшений. В их числе мультиплексирование запросов (все запросы могут быть обработаны параллельно), увеличение производительности, сжатие заголовков и т.д.
HTTP/2 пришёл на смену SPDY, разработка которого прекращена.
Nginx поддерживает протокол http/2, начиная с версии 1.9.5. Однако, в стабильном выпуске Debian Jessie присутствует только версия 1.6.2. Поэтому подключим репозиторий backports, чтобы обновить nginx до 1.9.10.
Перед обновлением необходимо узнать, какие именно пакеты nginx установлены в системе (а их несколько). Смотрим вывод команды:
# dpkg -l | grep nginx
У меня на сервере он такой:
root@rusadmin:~# dpkg -l | grep nginx ii nginx-common 1.6.2-5+deb8u1 all small, powerful, scalable web/proxy server - common files ii nginx-extras 1.6.2-5+deb8u1 i386 nginx web/proxy server (extended version)
Значит, мне следует обновить эти пакеты. Что я и сделал.
# aptitude install nginx-common nginx-extras openssl -t jessie-backports
Здесь после ключа -t указываем репозиторий jessie-backports.
OpenSSL версии 1.0.2 мы устанавливаем для поддержки ALPN.
Включаем http/2 для виртуального хоста
В конфигурационном файле всех ваших сайтов, поддерживающих ssl, (если вы используете раздельные файлы для виртуальных хостов в папке /etc/nginx/sites-enabled) или же в главном конфигурационном файле /etc/nginx/nginx.conf находим параметр listen.
Обычно, этот параметр выглядит так:
listen 443 ssl;
Если включён spdy, то так:
listen 443 ssl spdy;
В первом случае нужно просто добавить после ssl параметр http2. Во втором — заменить spdy на http2. В итоге должно получиться это:
listen 443 ssl http2;
Параметр ssl_prefer_server_ciphers
приводим к значению off
.
Или же привести список доступных шифров к соответствию с чёрным списком RFC 7540, Appendix A.
ssl_ciphers EECDH:EDH:!3DES:!DES:!DSS:!SEED:!CAMELLIA:!NULL:!RC4:!SHA;
После всех внесённых изменений следует протестировать конфигурацию командой nginx -t
.
В случае успешного тестирования, перезапускаем nginx и идём на ssllabs.com тестировать сервер. Также можно воспользоваться дополнением SPDY indicator для Firefox.