Published on

如何启用 HTTP/2 (Apache Wordpress)

Authors
  • avatar
    Name
    Adam Liu
    Twitter

副标题:在表弟面前翻车是种什么样的感觉?🤔

视频工具: 腾讯会议

时长:约 2 小时

课程内容:

  1. 介绍 http/2.0
  2. 如何看出才能看到自己用了 http/2.0
  3. 记录升级前后的测试结果,by Pingdom
  4. 登陆服务器更改 Apache 配置
    1. 安装 http/2 模块
    2. 配置 VirtualHost,启用 http/2
  5. 翻车过程

一切都是按剧情进行。

null

介绍如何查看当前浏览器使用的 http 协议版本。

null

更新为 http/2.0 之前的 PingDom 测试。
https://tools.pingdom.com/#5c8858e403800000

null

启用 http/2 模块。重启 apache 。

null

配置 Apache VirtualHost 也是按照节奏进行。

翻车过程

弄完上面的各个步骤,我和表弟马上使用 Chrome 查看了协议版本,然而发现 http/2 并没有生效。

虽然我们是隔着屏幕教学,然而我还是略觉得尴尬 😅,怎么又翻车了,说好的半个小时弄好,最后用了 2 个小时。

这个时候我的疑问是:

  1. 我的也是 Bitnami wordpress,也是 按照上述步骤配置好的,怎么表弟的网站不行?(后面会解答)
  2. 难道是阿里云有什么神秘的东西?(其实并没有)
  3. 是不是有 typo ?(我再三检查了一下,发现没有 typo)

经过一番 Google Search, 我发现了 apache 启用 http/2 的必须条件,以及我表弟网站的支持情况:

  1. 网站要支持 https (虽然 http/2 也可以支持 http 非安全方式链接 (h2c) 但是大多数浏览器只支持 https 的 2.0 版本) ✅
  2. Apache 版本 要大于 2.4.24 ✅
  3. 要使用 php-fpm ❌
  4. 关于 Apache MPM(Multi-Processing Modules), http/2 不支持 Prefork 模式,需要使用 Event 模式 ❌

以上 4 点的参考内容:

https://helgeklein.com/blog/2018/11/enabling-http-2-in-apache-on-ubuntu-18-04/

https://httpd.apache.org/docs/2.4/howto/http2.html

启用 php-fpm 和 MPM Event Mode

只需要根据这篇文章操作就可以启用:https://docs.bitnami.com/aws/apps/wordpress/administration/enable-phpfpm/

解答一下上面的疑问一:

我的 Bitnami Wordpress 是默认启用的,因为我使用 EC2 AMI Marketplace 直接安装 Wordpress。

我表弟的 Bitnami Wordpress 是使用阿里云 ECS 手动安装,过程很多特性并没有默认启用,比如 Apache MPM event 模式是没有启用的,这是因为 Prefork 模式有跟好的操作系统兼容性(来源)。

延伸内容

如果你想继续更深入了解,可以看看 Apache 的 Multi-Processing Modules (MPMs)。 以及三种 MPM 的工作模式:prefork, worker, 和 event。

这个链接在:https://httpd.apache.org/docs/2.4/mpm.html