在 Apache Httpd 上部署 HTTP/2
本文最后更新于 2815 天前,其中的信息可能已经有所发展或是发生改变。

准备

因为 Apache Httpd 没有很好的 package 支持所以很多发行版都都得依赖官方源,如果官方源没有的话,就只有编译安装一门了。

  1. Apache Httpd 从 2.4.17 开始支持 mod_http2 ,所以我们至少需要大于 .17 版本的才行。
  2. Apache Httpd 对 HTTP/2 的支持还需要版本大于 1.0.2 的 OpenSSL 和 libnghttp2 库的支持。

目前支持的发行版:

Ubuntu 16.04 ( apache2=2.4.18) | Debian 9 ( apache2= 2.4.23 或 更新) | Fedora 23/24

曲线支持

一、Ubuntu 12.04/14.04 可以通过 PPA 源 ppa:ondrej/apache2 或者安装最新的 Apache Httpd

二、CentOS7 可以通过安装 yum install mod_http2 安装相关依赖,具体可能更加复杂,可以查阅一下其他教程。

编译安装

在你原来的编译参数中加入:--enable-http2 ,这里解释一下编译参数:

–enable-http2

让 Apache Httpd 可以实现 HTTP/2 协议

–with-nghttp2=<dir>

如果你的 libnghttp2 是编译的,那么通过这个定义的编译好的目录

Windows

WIndows 的话,目前 UPUPW 一键包的默认 Apache2 就是 2.4.17 之后会更新
XAMPP 也会安装最新的 Apache Httpd 版本。

配置

软件源

通过软件源安装的用户,需要在 /etc/apache2/mods-enabled 或者 /etc/httpd/mod-enabled 中创建一个 http2.load 文件 ,里面加入

LoadModule http2_module /usr/lib/apache2/modules/mod_http2.so

然后保存,重启服务。

CentOS\Fedora:

service httpd restart

Debian\Ubuntu:

service apache2 restart

编译/windows

httpd.conf 中,找到

#LoadModule http2_module /usr/lib/apache2/modules/mod_http2.so

将前面的 # 取消,如果没有这句话,就直接添加去掉 # 后的语句。

然后保存,重启服务。

配置 SSL

待写

开启 H2

<VirtualHost x.x.x.x:443 >

ProtocolsHonorOrder On

Protocols h2 h2c http/1.1

...

...

</VirtualHost>

其实 80 端口也可以加入 Protocols h2c http/1.1 ,但是暂时没有浏览器加入对 80 端口的 http/2 支持。

不过不要忘记重启。

上一篇
下一篇