Как включить HTTP/2 в Nginx
На этой странице
- Требования
- Включить HTTP/2 в Nginx
- Ссылки
Протокол передачи гипертекста версии 2 (HTTP/2) — это последняя версия протокола HTTP, опубликованная в качестве стандарта IETF в RFC 7540 в 2015 году. Основное внимание в протоколе уделяется производительности; в частности, воспринимаемая конечным пользователем задержка, использование ресурсов сети и сервера. Одна из основных целей состоит в том, чтобы разрешить использование одного подключения браузеров к веб-сайту. Протокол обратно совместим, поэтому методы HTTP, коды состояния и семантика такие же, как и в предыдущих версиях протокола. Nginx поддерживает HTTP/2, начиная с версии 1.9.5. В этом руководстве я буду предполагать, что у вас уже есть работающая конфигурация TLS, и что у вас установлена требуемая версия Nginx в выбранном вами дистрибутиве Linux, и что вы знаете, как использовать Lets Encrypt, или знаете, как создать самостоятельную -подписанный сертификат.
Требования
Чтобы включить HTTP/2 в Nginx, вам необходимо выполнить следующие требования:
- Nginx версии 1.9.5 или выше. Вы можете проверить свою версию Nginx, выполнив команду (
nginx -v
). - OpenSSL версии 1.0.2 или выше. Вы можете проверить свою версию OpenSSL, выполнив команду (версия OpenSSL) или установив последнюю версию OpenSSL.
- Сертификат SSL/TLS от Lets 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.
Ссылки
- RFC 7540
- HTTP/2