В состав основных исходных текстов nginx принят (http://mailman.nginx.org/pipermail/nginx-devel/2015-Septembe... модуль с реализацией протокола HTTP/2, соответствующего спецификациям RFC 7240 (http://www.rfc-editor.org/rfc/rfc7540.txt) и RFC 7241 (http://www.rfc-editor.org/rfc/rfc7541.txt) (расширение HPACK для сжатия заголовков). Реализация HTTP/2 представлена в виде модуля ngx_http_v2 (включается через "configure --with-http_v2_module"), который заменил собой модуль ngx_http_spdy. Поддержка протокола SPDY, методы которого легли в основу HTTP/2, удалена из состава nginx.
Основные особенности (http://daniel.haxx.se/http2/) (PDF (https://github.com/vlet/http2-explained/blob/master/http2.ru... HTTP/2.0:- Применение бинарного протокола, оперирующего передачей бинарных кадров. Каждый кадр имеет заголовок с информацией о типе, размере, опциях и идентификаторе потока. Кадры с типом DATA используются для передачи данных, HEADERS - HTTP-заголовков, RST_STREAM - для досрочного прерывания отправки данных;
- Мультиплексирование и распараллеливание потоков в рамках одного TCP-соединения. Пакеты разных потоков смешиваются и, в отличие от конвейерной передачи HTTP/1.1, не ожидают окончания отправки запроса. Поддержка эффективной двунаправленной передачи данных. Возможность мультиплексирования при обращении к разным хостам, что позволяет дополнительно ускорить одновременную загрузку web-контента с разных сайтов (в SPDY мультиплексирование поддерживается только для одного хоста);
- Возможность установки приоритетов и зависимостей для потоков, что позволяет выделить наиболее важные потоки, которые нужно выполнить в первую очередь, а также определить зависимость одного потока от другого;
- Сжатие HTTP-заголовков. В том числе поддерживается устранение дубликатов заголовков и Cookie, повторяющихся для серии запросов к одному сайту. Допускается определение отдельных заголовков не подлежащих сжатию;
- Низкая чувствительность к задержкам;- Средства для согласования протокола между клиентом и сервером, позволяющие выбрать HTTP/1.1, HTTP/2.0 и другие протоколы: сервер предоставляет список поддерживаемых протоколов, которые может выбрать клиент. Для шифрованных соединений параметры TLS согласовываются при помощи протокола APLN, при котором клиент сообщает список поддерживаемых опций, а сервер выбирает наиболее оптимальный для себя вариант;
- Обеспечение высокого уровня совместимости с HTTP/1.1: сохранены заголовки, схема URI, коды состояния и методы (GET, POST и т.п.). Обеспечена возможность создания прокси для доступа клиентов HTTP/1.1 к серверам HTTP/2.0;- Возможность установки шифрованных (HTTPS) и нешифрованных соединений (HTTP). Шифрование осуществляется с использованием TLS 1.2 или более новой версии. Несмотря на то, что спецификация допускает создание нешифрованных соединений, разработчики Firefox и Chrome намерены обеспечить работу HTTP/2.0 только поверх TLS;
- Поддержка технологии Server push (https://ru.wikipedia.org/wiki/%D0%A2%D0%... для передачи данных от сервера к клиенту (например, когда сервер считает, что после определённого запроса обязательно будут затребованы другие данные, он может отправить эти данные не дожидаясь фактического запроса);
- Поддержка HTTP/2.0 уже реализована в браузерах Firefox 36+, Chrome (требуется сборка с "--enable-spdy4") и IE 11. Серверные реализации пока ограничиваются (https://github.com/http2/http2-spec/wiki/Implementations)&nb... (http://open.litespeedtech.com/), H2O (https://github.com/kazuho/h2o), nghttp2 (https://nghttp2.org/) и некоторыми библиотеками на высокоуровневых языках.
URL: http://mailman.nginx.org/pipermail/nginx-devel/2015-Septembe...
Новость: http://www.opennet.me/opennews/art.shtml?num=42980
не в курсе, подскажите в бесплатной версии все это будет доступно?
причем тут платная? первая ссылка в тексте
Он наверно имел ввиду всёвключеноизкаробки
Мы уже используем в продакшене опенсорц патч для http2 в nginx,
Шикарно! Ускорение работы сайтов из каробки!
Не прошло и полгода.
Хочу. Как это бэкпортировать?
22.09.2015 будет очередной релиз 1.9.5, тогда можете смело играться :)
> 22.09.2015 будет очередной релиз 1.9.5, тогда можете смело играться :)Благодарствую за ценные сведения.
http://nginx.org/patches/http2/
если невтерпеж )
спасибо, потестировал!
> спасибо, потестировал!И как, много багов нашел?
Интересно было бы посмотреть есть ли реальный плюс от этого. Яндекс тестировал в свое время SPDY и не заметил каких-либо улучшений: http://habrahabr.ru/company/yandex/blog/222951/ Если заметных улучшений не будет, то этот HTTP/2 просто усложнение и увеличение различного рода векторов атаки на сервер (ну или на клиент).
Судя по описанию они не стали отказываться от костылей HTTP/1.1: шардинг, склейка большого числа css/js/img в блобы, поэтому и не увидели больших преимуществ. Чтобы увидеть преимущества http2 надо отказаться от этих костылей, задействовать server push.
Зацените, например, разницу скорости загрузки страницы со 180 картинками по http2 vs http/1.1, особенно если высокая задержка: https://http2.golang.org/gophertiles
> склейка большого числа css/js/img в блобыОптимизацию теперь называют костылем, однако. Сжатие тоже костыль наверное? Подкрутить ядро поди тоже костыль?
>> склейка большого числа css/js/img в блобы
> Оптимизацию теперь называют костылем, однако. Сжатие тоже костыль наверное? Подкрутить
> ядро поди тоже костыль?Зафигачили индексы в СУБД - еще один костыль.
>>> склейка большого числа css/js/img в блобы
>> Оптимизацию теперь называют костылем, однако. Сжатие тоже костыль наверное? Подкрутить
>> ядро поди тоже костыль?
> Зафигачили индексы в СУБД - еще один костыль.Установить любой софт не глядя, тоже костыль.
Ок. Поменяли один файл из 100, браузер качает склееную простыню из 100 файлов заново, вместо того, чтобы быстро загрузить один изменившийся. Это не оптимизация — это костыль для обходя проблемы с закачкой большого числа файлов в HTTP/1.1. В http2 такой проблемы нет.
Все правильно. И картинками проще управлять раздельными. И js с css на мелкие файлы логически разбивать, не заморачиваясь со сборкой. Все это несомненный плюс.А вот сделать из текстового протокола бинарный, это уже плюс сомнительный.
Ощущение что вы css/js копи пастом собираете, проблемы то нет.
> Ощущение что вы css/js копи пастом собираете, проблемы то нет.Не, вот знаете, если протокол диктует представление контента - это таки хвост виляет собакой, а не что-нибудь еще.
Трафик http/1.1 всё равно gzip'ом жмётся почти всегда.
> Все правильно. И картинками проще управлять раздельными. И js с css на
> мелкие файлы логически разбивать, не заморачиваясь со сборкой. Все это несомненный
> плюс.
> А вот сделать из текстового протокола бинарный, это уже плюс сомнительный.Даешь обфускацию с DRM js/css,
> Даешь обфускацию с DRM js/css,Так фигня вопрос - сделать шифрование или сжатие на JS вообще как два байта переслать. А уж с помощью WS можно произвольный протокол запустить поверх. Хотя при сильном желании можно и поверх HTTP.
> А вот сделать из текстового протокола бинарный, это уже плюс сомнительный.Ну да, жыпег передаваемый в ответе на GET - такой из себя весь текстовый. Да и gzip-encoding ты врядли на глаз декодировать сможешь.
> Ок. Поменяли один файл из 100, браузер качает склееную простыню из 100
> файлов заново, вместо того, чтобы быстро загрузить один изменившийся. Это не
> оптимизация — это костыль для обходя проблемы с закачкой большого числа
> файлов в HTTP/1.1. В http2 такой проблемы нет.Это не проблема. Хотя если вы меняете css/js 7 раз в день то да, вам просто необходим http2
> Это не проблема.Вообще-то это проблема. Если сделать сайт "как логично" а не "как технические ограничения HTTP 1.1 диктуют" - он будет очень медленно грузиться на соединениях с большим RTT. Конечно, есть пайплайнинг. Но в целом HTTP 1.1 обладает рядом бестолковостей, которых у HTTP 2 нет.
> то да, вам просто необходим http2
Должен же был прийти кто-то и избавить сайтостроителей от адовых костылестроений. Логично что это оказался кто-то типа гугля, который выкусывает по полной. Вы знаете, когда надо изгибать контент под интимные особенности протокола - это таки недостаток протокола прежде всего. Хотя с сжатием заголовков они имхо несколько перемудрили.
> Должен же был прийти кто-то и избавить сайтостроителей от адовых костылестроений.Костыли HTTP1.1 понятны и в принципе ничего сложного в них нет. Тут главное чтобы HTTP2.0 не добавит своих проблем и геморроя, сложностей с разработкой и отладкой, а также проблем с безопасностью.
nginx 2.0 - теперь и http/2.0 :)