Ранее в этом году мы выпустили ранний альфа-патч для включения поддержки HTTP / 2 в нашем продукте NGINX с открытым исходным кодом и на прошлой неделе полностью поддерживаемую реализацию HTTP / 2 в NGINX Plus . Сегодня мы с гордостью объявляем, что HTTP / 2 был посвящен репо с открытым исходным кодом и теперь официально доступен как часть NGINX версии 1.9.5 .
Если вы хотите узнать больше о HTTP / 2, мы сделали доступными следующие ресурсы:
- Пожалуйста, прочтите наш технический документ, который охватывает все, что вам нужно знать о HTTP / 2.
- Загрузите специальную версию книги Ильи Григорика о высокопроизводительных браузерных сетях от Google.
Обратите внимание, что в этом выпуске убрана поддержка SPDY. В ветке NGINX 1.9.x мы полностью удалили модуль SPDY из кодовой базы и заменили его модулем HTTP / 2 . После перехода на 1.9.5 вы больше не можете настраивать NGINX для использования SPDY. Если вы хотите продолжать использовать SPDY, он по-прежнему будет поддерживаться в ветке NGINX 1.8.x.
Переход на HTTP / 2 с NGINX 1.9.5
В этом разделе рассматриваются изменения, необходимые для включения HTTP / 2, в том числе всего несколько изменений в конфигурации NGINX.
Предпосылки
Перед обновлением удалите spdy
параметр из всех listen
директив вашей конфигурации. Это обеспечит гладкое обновление. Оттуда установите или обновите NGINX, используя один из наших готовых двоичных файлов . Инструкции доступны здесь .
Перенаправление всего трафика на SSL / TLS
Если ваше приложение еще не зашифровано с помощью SSL / TLS, сейчас самое время сделать этот шаг. Шифрование вашего приложения защищает вас от шпионских атак и атак «человек посередине». Некоторые поисковые системы даже награждают зашифрованные сайты улучшенным рейтингом в результатах поиска. Следующий блок конфигурации перенаправляет все простые HTTP-запросы в зашифрованную версию сайта.
server {
listen 80;
location / {
return 301 https://$host$request_uri;
}
}
Включение HTTP / 2
Чтобы включить поддержку HTTP / 2, просто добавьте http2
параметр ко всем listen
директивам. Также включите ssl
параметр, обязательный, потому что браузеры не поддерживают HTTP / 2 без шифрования.
server {
listen 443 ssl http2 default_server;
ssl_certificate server.crt;
ssl_certificate_key server.key;
...
}
При необходимости перезапустите NGINX, например, запустив nginx -s reload
команду. Чтобы убедиться, что перевод HTTP / 2 работает, вы можете использовать плагин «Индикатор HTTP / 2 и SPDY», доступный для Google Chrome и Firefox .
Предостережения
- Если вы используете брандмауэр веб-приложений (WAF), который находится перед NGINX, убедитесь, что он способен анализировать HTTP / 2, или переместите его за NGINX.
- Функция HTTP / 2 «Server Push» не поддерживается в этом выпуске.
- Если
ssl_prefer_server_ciphers
установлено значениеon
и / или список,ssl_ciphers
который определен в Приложении A: Используется черный список TLS 1.2 Ciper Suite , браузер будет испытывать ошибки рукопожатия и не работать. Пожалуйста, обратитесь к разделу 9.2.2 HTTP / 2 RFC для более подробной информации.
Особая благодарность
NGINX, Inc. хотела бы поблагодарить Dropbox и Automattic , которые являются активными пользователями нашего программного обеспечения и любезно поддержали разработку нашей реализации HTTP / 2. Их вклад помог ускорить нашу возможность донести это программное обеспечение до вас, и мы надеемся, что вы сможете поддержать их по очереди.
[Эта статья была написана Фейсал Мемон]