Should we use Apache's HTTP2?

I wanted to use HTTP2 with Apache 2.4.16 (probably need to upgrade to 2.4.17) and stumbled across this comment on the official Apache Page.

Warning

This module is experimental. Its behaviors, directives, and defaults are subject to more change from release to release relative to other standard modules. Users are encouraged to consult the "CHANGES" file for potential updates.

On the other hand, many others are making tutorials on how to enable it. So is it safe to use it or should we wait?

Also, can we use HTTP2 in combination with Reverse Proxy?

6
задан 28 March 2017 в 00:02
1 ответ

Обновление: Начиная с версии Apache 2.4.26, mod_http2 больше не считается экспериментальным. Ответ ниже был обновлен, чтобы отразить это.

Также обратите внимание, что mod_http2_proxy все еще считается экспериментальным.

Экспериментальная метка добавляется при первом добавлении функциональности и, как поясняется в тексте, предупреждает, что реализация, опции и API могут быть подвержены изменениям. Поэтому, при использовании экспериментальной функции, вы должны внимательно прочитать Change file при установке любых последующих обновлений, чтобы убедиться, что вы знаете о любых изменениях, которые вам нужно будет внести.

Тэг Experimental does not означает, что реализация нестабильна. Нестабильные опции обычно не добавляются непосредственно в основное дерево исходников Apache, а обрабатываются как отдельные устанавливаемые модули.

Сказав, что для использования HTTP/2 вам нужно обновиться хотя бы до 2.4.17, но на самом деле нужно обновиться до последней версии (2.4.26 на момент написания статьи), так как этот модуль претерпевает значительные изменения, имеет ряд ошибок и улучшений производительности с момента запуска и даже обратился к ряду CVE (в том числе: 2016-1546 , 2016-8740 и 2017-7659 ). Это не значит, что в Apache есть много других CVE (и практически всех других программ), но это значит, что вам действительно нужно запустить последнюю версию.

Вам также нужно будет скомпилироваться под OpenSSL 1.0.2 для работы с Chrome и Firefox (так как они позволяют только более новому протоколу ALPN, а не старому протоколу NPN общаться с HTTP/2 соединением), что может быть дополнительной болью, так как большинство менеджеров пакетов еще не включили это в свой пакет. Начиная с версии 2.4.26, Apache также поддерживает OpenSSL 1.1.

Запуск более новых версий и компиляция из исходных текстов, а не из менеджеров пакетов (например, yum или APT) требует дополнительных усилий и дисциплины (так как они не будут так легко установлены или исправлены), что выходит за рамки вашего вопроса, но не является чем-то, в чем можно легко вдаваться в подробности. Все это при условии, что вы работаете под Linux. Если вы работаете под Windows, то, скорее всего, вы уже скачиваете и устанавливаете отдельно

Наконец-то к сути вопроса. В релизе Apache 2.4.26 экспериментальное предупреждение было сброшено для основного mod_http2 модуля, хотя для более нового mod_proxy_http2 модуля оно все еще на месте. Лично я запустил HTTP/2 на своем личном сайте с версии 2.4.17 и никогда не сталкивался с какими-либо реальными проблемами. Мне он кажется достаточно стабильным. Опять же, я не получаю большие объемы трафика, и для меня это не проблема, если он пойдет вниз. Буду ли я запускать его против реального производственного сайта? Наверное, нет, пока не будет удалено экспериментальное предупреждение (2.4.26). Опять же, единственный способ это сделать - это попробовать. HTTP/2 также достаточно легко отключить, если он вызывает проблемы. В основном это полностью зависит от вашего аппетита к риску. Вы можете прочитать (и подписаться) на список известных проблем на GitHub (https://github.com/icing/mod_h2/issues), а автор модуля очень отзывчив и полезен.

Не уверен, что вы спрашиваете о функциональности обратного прокси. С 2.4.21 Apache представил mod_proxy_http2, который обрабатывает HTTP/2 бэкенды, но я бы сказал, что он еще меньше используется и тестируется (все еще помечен как экспериментальный). Это также не так уж и полезно: основные преимущества HTTP/2 - в сетях с высокой латентностью (т.е. между клиентом и бэкендом), а не в низколатентных соединениях фронтенд-бэкенд. Поэтому пока что я бы использовал HTTP/2 в Apache, но сохранил обратное прокси-соединение с любой инфраструктурой бэкенда к HTTP/1. И да, это работает абсолютно нормально, если вы об этом спрашиваете, хотя в ответах на этот вопрос утверждается, что разговоры по HTTP/2 могут быть полезны на протяжении всего пути.

.
8
ответ дан 3 December 2019 в 00:21

Теги

Похожие вопросы