如何在 Ubuntu 和 Debian 上的 Apache Web 服务器中启用 HTTP/2如何在 Ubuntu 和 Debian 上的 Apache Web 服务器中启用 HTTP/2如何在 Ubuntu 和 Debian 上的 Apache Web 服务器中启用 HTTP/2如何在 Ubuntu 和 Debian 上的 Apache Web 服务器中启用 HTTP/2
  • 文章
  • 正则表达式
    • 工具
  • 登录
找到的结果: {phrase} (显示: {results_count} 共: {results_count_total})
显示: {results_count} 共: {results_count_total}

加载更多搜索结果...

搜索范围
模糊匹配
搜索标题
搜索内容
发表 admin at 2025年2月28日
类别
  • 未分类
标签

如何在 Ubuntu 和 Debian 上的 Apache Web 服务器中启用 HTTP/2

在此页

  1. 先决条件
  2. 禁用 mod_php 模块
  3. 启用与 HTTP/2 兼容的 Apache MPM
  4. 在 Apache 中启用 HTTP/2 支持
  5. 链接

Hypertext Transfer Protocol Version 2 (HTTP/2) 是 HTTP 协议的最新版本,于 2015 年作为 IETF 标准在 RFC 7540 中发布。该协议的重点是性能;具体来说,最终用户感知的延迟、网络和服务器资源使用情况。一个主要目标是允许使用从浏览器到网站的单一连接。该协议是向后兼容的,因此 HTTP 方法、状态代码和语义与协议的先前版本相同。 Apache 从 2.4.17 版本开始支持 HTTP/2。在本教程中,我将假设您已经有一个有效的 TLS 配置,并且您已经在您选择的 Linux 发行版上安装了所需的 Apache 版本,并且您知道如何使用 Lets Encrypt,或者您知道如何发出一个自签名证书。

本教程已经在 Debian 11、Debian 10、Debian 9、Ubuntu 22.04 LTS、Ubuntu 20.04 LTS 和 Ubuntu 18.04 LTS 上进行了测试。

先决条件

要在 Apache 中启用 HTTP/2,您需要满足以下要求:

  • 首先,您需要在服务器上启用 HTTPS。所有主流浏览器都只允许通过 HTTPS 使用 HTTP/2。此外,需要具有现代密码套件的 TLS 协议版本 >= 1.2。
  • 接下来,确保您运行的是 Apache 2.4.17 或更高版本,因为此版本及更高版本支持 HTTP/2。
  • 此外,请确保您的客户端/浏览器确实支持 HTTP/2。

禁用 mod_php 模块

在下一步将 Apache MPM 模块切换到 mpm_event 之前,我们必须禁用旧的 mod_php 模式并将其替换为更现代的 PHP-FPM 模式。每个操作系统版本的命令不同,请使用与您安装的系统相匹配的命令。

Ubuntu 22.04 长期支持版

sudo apt-get install php8.1-fpm
sudo a2dismod php8.1
sudo a2enconf php8.1-fpm
sudo a2enmod proxy_fcgi

德比安 11

sudo apt-get install php7.4-fpm
sudo a2dismod php7.4
sudo a2enconf php7.4-fpm
sudo a2enmod proxy_fcgi

Ubuntu 20.04 长期支持版

sudo apt-get install php7.4-fpm
sudo a2dismod php7.4
sudo a2enconf php7.4-fpm
sudo a2enmod proxy_fcgi

德比安 10

sudo apt-get install php7.3-fpm
sudo a2dismod php7.3
sudo a2enconf php7.3-fpm
sudo a2enmod proxy_fcgi

Ubuntu 18.04 长期支持版

sudo apt-get install php7.2-fpm
sudo a2dismod php7.2
sudo a2enconf php7.2-fpm
sudo a2enmod proxy_fcgi

德比安 9

sudo apt-get install php7.0-fpm
sudo a2dismod php7.0
sudo a2enconf php7.0-fpm
sudo a2enmod proxy_fcgi

启用与 HTTP/2 兼容的 Apache MPM

默认情况下,Apache 将使用 prefork MPM。这个 MPM 与 HTTP/2 不兼容,所以我们必须用更现代的 mpm_event 模块替换它。

首先,我们禁用 mpm_prefork 模块:

sudo a2dismod mpm_prefork

然后我们启用 mpm_event 模块:

sudo a2enmod mpm_event

在 Apache 中启用 HTTP/2 支持

要让 HTTP/2 在 Apache 上运行,您需要启用并加载 SSL 和 HTTP/2 模块。为此,您可以在终端中运行以下命令:

sudo a2enmod ssl

然后

sudo a2enmod http2

要激活这些新模块,您需要运行:

sudo systemctl restart apache2

启用并加载必要的 Apache 模块后,导航到 Apache 配置目录并编辑 Apache 配置。

要在 Apache Web 服务器上启用 HTTP/2,请将以下内容之一添加到全局 Apache 配置或特定虚拟主机中。

Protocols h2 http/1.1

这是可用于在某些虚拟主机中启用 HTTP/2 的最小虚拟服务器配置:

<VirtualHost *:443>
ServerName example.com
ServerAlias www.example.com
DocumentRoot /var/www/public_html/example.com
SSLEngine on
SSLCertificateKeyFile /path/to/private.pem
SSLCertificateFile /path/to/cert.pem
SSLProtocol all -SSLv3 -TLSv1 -TLSv1.1
Protocols h2 http/1.1
</VirtualHost>

要检查您的服务器是否支持 HTTP/2,您可以使用浏览器开发工具。以下是来自 Google Chrome 和 Apple Safari 浏览器的屏幕截图,显示了在 https://example.com 域上运行的 HTTP/2。

铬合金

苹果浏览器

链接

  • RFC 7540
  • HTTP/2

©2015-2025 艾丽卡 support@alaica.com