Plesk 中的 HTTP/2 支持

概要

HTTP/2 是万维网使用的 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 服务器到最新版本且运行该版本。实现方式是进入 工具与设置 -> 服务器组件工具与设置 -> 服务管理 页面进行操作。

components

services

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 协议,请根据以下步骤进行故障排除。

  1. 请务必在域名的 主机设置 部分启用 SSL 支持。HTTP/2 只支持 SSL 站点,非 SSL 站点将继续在 HTTP/1.x 协议下运行。这对于 NGINX web 服务器和 web 浏览器来说无疑是一种限制。
  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. 检查文件 /usr/local/psa/admin/conf/panel.ini 是否有以下部分:

    [webserver]

    nginxHttp2 = true

  6. 检查 /usr/local/psa/admin/conf/panel.ini 文件确定没有不正确的项。如果有请修复。如果您对这些项不太确定,请备份 /usr/local/psa/admin/conf/panel.ini 然后从 /usr/local/psa/admin/conf/panel.ini.sample 恢复原始文件。

    重新创建配置文件:

    # plesk sbin httpdmng --reconfigure-all

  7. 如果已启用的 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;

  8. 如果启用了 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 文件中。我们不建议手动编辑该文件。

  9. 如果上面的步骤没有帮助,请联系 Plesk 技术支持
 

Leave your feedback on this topic here

If you have questions or need support, please visit the Plesk forum or contact your hosting provider.
The comments below are for feedback on the documentation only. No timely answers or help will be provided.