Назад | Перейти на главную страницу

Обновите Nginx за cloudflare до http2. Делать или нет?

Я использую версию nginx: 1.12.1 за машиной CloudFlare. На передней панели CloudFlare включен http2.

Мне было интересно, стоит ли перейти на Nginx 1.9.5, поддерживающий http2 ? Стоимость обновления значительна. Мой Linode centos - это

centos-релиз-7-3.1611.el7.centos.x86_64

а пакет Nginx по умолчанию, который поставляется через репозиторий rpm, по-прежнему находится на Nginx 1.12.

Приносит ли обновление версии Nginx на машинах CloudFlare значительные преимущества?

Редактировать: Красить меня наивно, но я думал, что 1,12 ниже 1,9. Я такой глупый. Вернемся ко второму вопросу, оказывает ли это влияние?

CloudFlare не имеет доступа к исходным серверам через HTTP / 2, только HTTP / 1.1. Я могу подтвердить это, просмотрев журналы моего сервера.

Из-за этого нет смысла включать HTTP / 2, если к вашему серверу имеет доступ только CloudFlare.

Обновить

Чтобы расширить ответ, CloudFlare использует HTTP / 2 между своим CDN и клиентским браузером. Это дает прирост производительности для браузера. Внутреннее соединение с источником менее важно, потому что на большинстве веб-сайтов большинство ресурсов кэшируется.

Возможно, это могло бы немного ускорить процесс, если бы они использовали HTTP / 2, но это хорошая компания, и если это будет полезно, они со временем это сделают.

Как уже упоминалось, Cloudflare в настоящее время не передает HTTP / 2 на исходные серверы, поэтому реализация HTTP / 2 на вашем исходном сервере не дает особых преимуществ.

Основным преимуществом HTTP / 2 является соединение с низкой задержкой, например соединение браузера с сервером, которое Cloudflare уже использует для обслуживания ресурсов через HTTP / 2. От сервера к серверу преимуществ меньше.

Кроме того, Cloudflare использует версию Nginx и в настоящее время не поддерживает HTTP / 2 на стороне сервера и Nginx заявил, что не собирается его добавлять:

Планируется ли поддержка прокси HTTP / 2 в ближайшем будущем?

Короткий ответ:

Нет, нет никаких планов.

Длинный ответ:

Практически нет смысла реализовывать его, поскольку основное преимущество HTTP / 2 заключается в том, что он позволяет мультиплексировать множество запросов в одном соединении, таким образом [почти] снимая ограничение на количество одновременных запросов - и такого ограничения нет при разговоре с ваши собственные серверы. Более того, при использовании HTTP / 2 для бэкэндов ситуация может даже ухудшиться из-за использования одного TCP-соединения вместо нескольких.

С другой стороны, реализация протокола HTTP / 2 и мультиплексирование запросов в рамках одного соединения в восходящем модуле потребует серьезных изменений в восходящем модуле.

В связи с вышеизложенным, нет планов по внедрению поддержки HTTP / 2 в восходящем модуле, по крайней мере, в обозримом будущем. Если вы все еще думаете, что общение с серверными модулями через HTTP / 2 необходимо - не стесняйтесь предоставлять исправления.

Вы можете согласиться или не согласиться с вышеизложенным, но это казалось довольно определенным, когда оно было написано (в 2015 году), и с тех пор не было обновлений, хотя запрос билета для этого был повторно открыт 4 месяца назад и был оставлен открытым.

Это не означает, что Cloudflare не пойдет дальше и не сделает это самостоятельно (как это было с Server Push до того, как Nginx поддержал это), но я бы сказал, что это менее вероятно, поскольку основная платформа, на которой они основаны, не поддерживает это.

Наконец, вы заявляете, что используете Centos 7.3. У этого есть более старая версия OpenSSL (1.0.1), которая не поддерживает ALPN, необходимый для разрешения HTTP / 2 для браузеров на основе Chromium (Chrome и Opera) и, возможно, большего количества таких клиентов HTTP / 2 в будущем, поэтому это вполне может потребоваться с будущей реализацией Cloudflare. Недавно выпущенный Centos 7.4 действительно включает OpenSSL 1.0.2, который теоретически поддерживает ALPN, но упакованные версии Nginx на момент написания все еще скомпилированы с более старой версией, так что это не помогает (пока). См. Это сообщение в блоге для получения более подробной информации. Таким образом, речь идет не только об обновлении Nginx, но также ОС и / или OpenSSL, и даже тогда это не поможет в данный момент. Конечно, есть способы обойти это (установка из источника, запуск его в образе Docker вместо этого ... и т. Д.), Но если вы говорите, что стоимость обновления одного только Nginx значительна, тогда я полагаю, что эти дополнительные вещи действительно собираются поставить гвоздь в том гробу.

В общем, я бы сказал, что пока оставайтесь достаточно хорошо и просто наслаждайтесь тем фактом, что Cloudflare обеспечивает поддержку HTTP / 2 и заботится о ней. Фактически, один из самых простых способов получить HTTP / 2, учитывая все проблемы, упомянутые выше, - это использовать такую ​​службу, как Cloudflare, и не беспокоиться о реализации этого в своей собственной инфраструктуре.

centos-release-7.3.1611.el7.centos.x86_64 это версия CentOS, которую вы установили, а не версия nginx.

nginx 1.12.1, который вы в настоящее время установили, является значительно более новой версией, чем 1.9.5 (поскольку 12 больше 9). Если используемые вами двоичные файлы были созданы с включенным http2, вы сможете использовать эту функцию, не меняя версию nginx.

Вы говорите, что у вас установлен Nginx 1.12.1 и (правильно), что Nginx поддерживает HTTP / 2 с версии 1.9.5.

Поскольку у вас уже есть более новая версия, я не совсем понимаю, почему вы говорите о необходимости обновления. (Похоже, на данный момент у вас последняя стабильная версия.)

Похоже, что у вас все должно быть настроено по версии и, вероятно, просто нужно изменить конфигурацию (добавить http2 к соответствующему ssl listen директивы).