Статьи

NGINX Open Source 1.9.5 выпущен с поддержкой HTTP / 2

Ранее в этом году мы выпустили ранний альфа-патч для включения поддержки HTTP / 2 в нашем продукте NGINX с открытым исходным кодом и на прошлой неделе полностью поддерживаемую реализацию HTTP / 2 в NGINX Plus . Сегодня мы с гордостью объявляем, что HTTP / 2 был посвящен репо с открытым исходным кодом и теперь официально доступен как часть NGINX версии 1.9.5 .

Если вы хотите узнать больше о HTTP / 2, мы сделали доступными следующие ресурсы:

Обратите внимание, что в этом выпуске убрана поддержка 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. Их вклад помог ускорить нашу возможность донести это программное обеспечение до вас, и мы надеемся, что вы сможете поддержать их по очереди.

[Эта статья была написана Фейсал Мемон]