ubuntu 18.04 Apache2启用HTTP/2

HTTP/2 可以让我们的应用更快、更简单、更稳定 – 这几词凑到一块是很罕见的!HTTP/2 将很多以前我们在应用中针对 HTTP/1.1 想出来的“歪招儿”一笔勾销,把解决那些问题的方案内置在了传输层中。不仅如此,它还为我们进一步优化应用和提升性能提供了全新的机会!

——《Web 性能权威指南》

Ubuntu18.04 官方源已经包含带有HTTP2模块的 Apache/2.4.29 ,所以我们可以很简单的启用 HTTP2。

首先启用 http2 模块,然后在虚拟主机的配置文件中或者在 Apache2 的全局配置文件中加入:

当客户端支持时优先使用 HTTP2 ,其次是 http/1.1,表明了一种优先顺序。

目前为止就已经启用完成了,但如果你是使用的 Apache2+PHP 架构的应用程序,由于 mpm_prefork 模块不支持 mod_http2,所以我们需要切换 mpm_prefork、mod_php 到 mpm_event 和 php-fpm 来解决这个问题。

最后使用 Firefox 的开发者工具测试一下:

OK, 大功告成。

注意:

最近发现在 ubuntu 22.04 / Apache/2.4.52 系统上,启用 http2 模块之后,服务器不定时的卡死无响应。

典型特性是使用 ps -A | grep apache 查看服务进程,会发现进程只剩下两个。

使用 strace -p  <pid> 查看,可以看到进程卡住在 futex 函数上,类似如下:

发生上述问题的情况下,通过可以禁用 HTTP2 解决此问题,原因暂时没有找到。

参考链接


发布者

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注