准备
因为 Apache Httpd 没有很好的 package 支持所以很多发行版都都得依赖官方源,如果官方源没有的话,就只有编译安装一门了。
- Apache Httpd 从 2.4.17 开始支持 mod_http2 ,所以我们至少需要大于 .17 版本的才行。
- 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 支持。
不过不要忘记重启。