Поддержка HTTP/2 в Plesk

Обзор

Протокол HTTP/2 (также известный как HTTP/2.0 и HTTP 2.0) – это вторая основная версия сетевого протокола HTTP, используемого в интернет-пространстве. Принятый в мае 2015 г., HTTP/2 был создан в ответ на значительные проблемы производительности HTTP 1.1. О преимуществах этого протокола можно прочитать здесь. В настоящее время HTTP/2 поддерживается большинством основных веб-браузеров.

Поддержка HTTP/2 доступна клиентам Plesk начиная с версии 12.5.30 с обновлением #28, и для нее требуется последняя версия nginx.

Примечание. Поддержка HTTP/2 предоставляется только для SSL-сайтов, не-SSL-сайты продолжат работать по протоколу HTTP/1.x.

Как включить поддержку HTTP/2 на своем сайте

Удостоверьтесь в том, что веб-сервер nginx обновлен до последней версии и работает. Это можно сделать на страницах Инструменты и настройки > Компоненты сервера и Инструменты и настройки > Управление службами.

components

services

Войдите на сервер по SSH как пользователь root и включите поддержку HTTP/2 в Plesk с помощью следующей утилиты командной строки:

# plesk bin http2_pref enable

При выполнении последнего шага ваш веб-сервер nginx будет настроен для использования протокола TLS с новыми и надежными шифрами, вся конфигурация веб-сервера будет пересобрана, а все ваши сайты и сайты ваших клиентов с поддержкой SSL будут перенесены на протокол HTTP/2.

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

Примечание. Можно просто воспользоваться такой онлайн-службой, как https://tools.keycdn.com/http2-test, чтобы проверить, что HTTP/2 включен на домене.

Чтобы вернуться к протоколу HTTP 1.x и отключить HTTP/2, пожалуйста, используйте следующую команду:

# plesk bin http2_pref disable
Поддержка ALPN

Чтобы протокол HTTP/2 правильно работал в Google Chrome, веб-сервер nginx должен поддерживать ALPN (Application-Layer Protocol Negotiation – согласование протокола на уровне приложения). Подробную информацию смотрите в документации к ALPN.

Поддержка ALPN для веб-сервера nginx доступна в Plesk для следующих операционных систем: CentOS 7, RedHat Enterprise Linux 7, Ubuntu 14.04, Ubuntu 16.04 и Debian 8.

Это означает, что HTTP/2 на базе Plesk работает на упомянутых операционных системах во всех современных браузерах.

Устранение неисправностей

Если у вас возникли проблемы при включении поддержки HTTP/2 для сайта, или проверка сайта с помощью https://tools.keycdn.com/http2-test показала, что включен только протокол HTTP 1.x, выполните следующие шаги, чтобы исправить это поведение.

  1. Удостоверьтесь в том, что поддержка SSL включена для сайта в разделе Настройки хостинга домена. Поддержка HTTP/2 предоставляется только для SSL-сайтов, не-SSL-сайты продолжат работать по протоколу HTTP/1.x. Это ограничение со стороны веб-сервера nginx и веб-браузеров.
  2. Проверьте, что nginx включен:

    # plesk sbin nginxmng –s

    Включите его при необходимости:

    # plesk sbin nginxmng -e

  3. Проверьте, что версия пакета OpenSSL – 1.0.1 или выше:

    # rpm -qa | grep openssl

    openssl-1.0.1e-42.el6_7.4.x86_64.

  4. Проверьте, что в /usr/local/psa/admin/conf/templates/custom/domain/nginxDomainVirtualHost.php нет шаблона индивидуальной конфигурации. Удалите его, если найдете, и пересоздайте конфигурационные файлы:

    # plesk sbin httpdmng --reconfigure-all

    Или, если вы не хотите удалять свои индивидуальные настройки, можно изменить файл /usr/local/psa/admin/conf/templates/custom/domain/nginxDomainVirtualHost.php следующим образом.

    Найдите строку, похожую на:

    ($OPT['default'] ? ' default_server' : '') . ($OPT['ssl'] ? ' ssl' : '') ?>;

    И замените ее двумя следующими строками:

    ($OPT['default'] ? ' default_server' : '') . ($OPT['ssl'] ? ' ssl' : '') .

    ($OPT['ssl'] && $VAR->domain->physicalHosting->proxySettings['nginxHttp2'] ? ' http2' : '') ?>;

    Затем выполните команду:

    # plesk bin http2_pref enable

  5. В случае возникновения проблем с SSL-подключением при включенном HTTP/2 удостоверьтесь в том, что значение директивы ssl_ciphers в файле /etc/nginx/conf.d/ssl.conf или в измененном файле nginxDomainVirtualHost.php следующее:

    ssl_ciphers EECDH+AESGCM+AES128:EECDH+AESGCM+AES256:EECDH+CHACHA20:EDH+AESGCM+AES128:EDH+AESGCM+AES256:EDH+CHACHA20:EECDH+SHA256+AES128:EECDH+SHA384+AES256:EDH+SHA256+AES128:EDH+SHA256+AES256:EECDH+SHA1+AES128:EECDH+SHA1+AES256:EDH+SHA1+AES128:EDH+SHA1+AES256:EECDH+HIGH:EDH+HIGH:AESGCM+AES128:AESGCM+AES256:CHACHA20:SHA256+AES128:SHA256+AES256:SHA1+AES128:SHA1+AES256:HIGH:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!KRB5:!aECDH:!EDH+3DES;

  6. Если ваш сайт не работает в некоторых браузерах после включения HTTP/2, это может означать, что у вас нет необходимых шифров и протоколов для поддержки HTTP/2. Воспользуйтесь утилитой sslmng из Plesk для установки имеющихся протоколов и списка шифров TLS после включения HTTP/2. Например, если вы хотите использовать точно такой же список шифров, какой использует Plesk, команда будет следующей:

    #plesk sbin sslmng --services=nginx --custom --ciphers="EECDH+AESGCM+AES128:EECDH+AESGCM+AES256:EECDH+CHACHA20:EDH+AESGCM+AES128:EDH+AESGCM+AES256:EDH+CHACHA20" --protocols="TLSv1 TLSv1.1 TLSv1.2"

    Конфигурация будет сохранена в файле /etc/nginx/conf.d/ssl.conf. Мы не рекомендуем редактировать этот файл вручную.

  7. Если описанные выше шаги не помогли, обратитесь в службу технической поддержки Plesk.