(Plesk for Linux) HTTP/2 Support in 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 обновлен до последней версии и работает. Это можно сделать на страницах Инструменты и настройки > Компоненты сервера и Инструменты и настройки > Управление службами.
Войдите на сервер по 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 и Debian 8.
Это означает, что HTTP/2 на базе Plesk работает на упомянутых операционных системах во всех современных браузерах.
Устранение неисправностей
Если у вас возникли проблемы при включении поддержки HTTP/2 для сайта, или проверка сайта с помощью https://tools.keycdn.com/http2-test показала, что включен только протокол HTTP 1.x, выполните следующие шаги, чтобы исправить это поведение.
-
Удостоверьтесь в том, что поддержка SSL включена для сайта в разделе Настройки хостинга домена. Поддержка HTTP/2 предоставляется только для SSL-сайтов, не-SSL-сайты продолжат работать по протоколу HTTP/1.x. Это ограничение со стороны веб-сервера nginx и веб-браузеров.
-
Проверьте, что nginx включен:
# plesk sbin nginxmng -s
Включите его при необходимости:
# plesk sbin nginxmng -e
-
Проверьте, что версия пакета OpenSSL – 1.0.1 или выше:
# rpm -qa | grep openssl openssl-1.0.1e-42.el6_7.4.x86_64.
-
Проверьте, что в
/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
-
В случае возникновения проблем с 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;
-
Если ваш сайт не работает в некоторых браузерах после включения 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
. Мы не рекомендуем редактировать этот файл вручную. -
Если описанные выше шаги не помогли, обратитесь в службу технической поддержки Plesk.