Протокол передачи гипертекста версии 2 (HTTP / 2) является последней версией протокола HTTP, опубликованной в качестве стандарта IETF в RFC 7540 в 2015 году.
Основное внимание в протоколе уделяется производительности; в частности, задержка у конечного пользователя, использование ресурсов сети и сервера.
Одна из основных целей – разрешить использование одного подключения браузера к веб-сайту.
Протокол обратно совместим, поэтому методы HTTP, коды состояния и семантика такие же, как и в предыдущих версиях протокола.
Nginx имеет поддержку HTTP / 2 начиная с версии 1.9.5
. В этом руководстве я собираюсь предположить, что у вас уже есть работающая конфигурация TLS, и что вам нужна установленная версия Nginx в выбранном вами дистрибутиве Linux, и что вы знаете, как использовать Let’s Encrypt, или вы знаете, как выпускать самоподписанный сертификат.
Требования
Чтобы включить HTTP / 2 в Nginx, вам необходимо выполнить следующие требования:
- Версия Nginx 1.9.5 или выше. Вы можете проверить свою версию Nginx, выполнив команду (nginx -v).
- OpenSSL версии 1.0.2 или выше. Вы можете проверить свою версию OpenSSL, выполнив команду (OpenSSL version).
- SSL / TLS сертификат от Let’s Encrypt или самоподписанный сертификат.
- Протокол TLS 1.2 или выше включен. В противном случае вы не сможете использовать HTTP/2. Реализация HTTP/2 должна использовать TLS версии 1.2 или выше для HTTP / 2 поверх TLS.
Включить HTTP / 2 в Nginx
Чтобы включить HTTP / 2 в Nginx, мы должны добавить параметр http2 в директиву listen на нашем виртуальном хосте:
listen 443 ssl http2;
И перезагрузите вашу конфигурацию Nginx:
sudo systemctl reload nginx.service
Вот минимальная конфигурация виртуального сервера, которую можно использовать для включения HTTP / 2 на нескольких виртуальных хостах:
server {
listen 443 ssl http2;
listen [::]:443 ssl http2;
server_name example.com;
root /path/to/public;
ssl_certificate /path/to/certificate.crt;
ssl_certificate_key /path/to/private.key;
ssl_protocols TLSv1.2;
}
Чтобы проверить, поддерживает ли ваш сервер HTTP / 2, вы можете использовать инструменты разработки вашего браузера или файлы журнала Nginx.
Ниже приведен скриншот из браузера Google Chrome, который показывает HTTP / 2 в действии на домене https://example.com.
Вы также можете использовать встроенную переменную Nginx $ http2 для просмотра согласованного протокола.
Эта переменная будет записывать: «h2» для HTTP/2 через TLS, «h2c» для HTTP/2 через открытый текст TCP или пустую строку в журнале доступа Nginx, если это настроено.
И это все, что нужно для включения HTTP/2 на вашем сервере Nginx.