Plesk 中的 HTTP/2 支持
概要
HTTP/2(还被称之为 HTTP/2.0 和 HTTP 2.0)是万维网使用的 HTTP 网络协议的第二大版本。2015 年 5 月获准创建 HTTP/2 以解决 HTTP 1.1 存在的某些重大性能问题。可进入 此处 了解该协议的优势。目前大部分主流 web 浏览器都支持 HTTP/2。
自 12.5.30 Update #28 版本起,Plesk 客户则可以使用 HTTP/2,该支持需要 nginx 最新版本。
注解: HTTP/2 只支持 SSL 站点,非 SSL 站点将继续在 HTTP/1.x 协议下运行。
如何为您的网站启用 HTTP/2 支持
请务必更新 NGINX web 服务器到最新版本且运行该版本。实现方式是进入 工具与设置 -> 服务器组件 或 工具与设置 -> 服务管理 页面进行操作。
以 root
身份通过 SSH 登录到服务器并使用以下命令行工具在 Plesk 中启用 HTTP/2:
# plesk bin http2_pref enable
最后一个步骤过程中,您的 NGINX web 服务器将会转向使用 TLS 协议和现代的安全密码,整个 web 服务器配置将会被重建,而有 ‘SSL 支持’ 的所有客户端站点都将移向使用 HTTP/2。
在切换到 HTTP/2 的过程中请检查命令输出查找错误或警告。如果有任何问题,请参阅 故障排除 小节。
注解: 您可以使用如 https://tools.keycdn.com/http2-test 的在线服务检查是否已在某个域名上启用了 HTTP/2 支持。
如果您想要返回 HTTP 1.x 而禁用 HTTP/2,请使用以下命令:
# plesk bin http2_pref disable
ALPN 支持
为了在 Google Chrome 中正确使用 HTTP/2,nginx web 服务器必须支持 ALPN (Application-Layer Protocol Negotiation)。详情请参阅 ALPN 文档 。
nginx web 服务器的 ALPN 支持在以下操作系统中的 Plesk 中可用。CentOS 7, RedHat Enterprise Linux 7, Ubuntu 14.04, Ubuntu 16.04, Debian 8.
也就是说 Plesk 支持的 HTTP/2 可在提及的操作系统上于所有现代浏览器中运行。
故障排除
如果您在为某个网站启用 HTTP/2 支持时遇到问题,或通过 https://tools.keycdn.com/http2-test 检查站点的结果中显示只启用了 HTTP 1.x 协议,请根据以下步骤进行故障排除。
-
请务必在域名的 主机设置 部分启用 SSL 支持。HTTP/2 只支持 SSL 站点,非 SSL 站点将继续在 HTTP/1.x 协议下运行。这对于 NGINX web 服务器和 web 浏览器来说无疑是一种限制。
-
检查是否启用 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
-
如果已启用的 HTTP/2 有 ssl 连接问题,请确保
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 必需的密码和协议。在启用 HTTP/2 后使用来自 Plesk 的
sslmng
工具设置可用的协议和 TLS 密码列表。例如,如果您想要使用与 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 技术支持 。