在 Ubuntu 上 开启 Apache2 HTTP/2 协议

一、HTTP2模块的启用

1、提要

前段时间安装了 Ubuntu 16.04 ,Apache2 升级成为了 2.4.18 版本,突然想起来这个版本支持了 HTTP/2 协议,于是尝试命令启动,然后…没有然后了

Ubuntu enable http/2

咦?不是说好了 2.4.17 开始内置 HTTP/2 协议的么?一番查阅,发现原来是 Ubuntu 16.04 是一个 LTS 版本,要稳定为主,而 mod_http2 是试验性的,所以旧不予加入…我去,这不是坑我么,本着不折腾不死星人的个性,开始了疯狂折腾…

2、添加PPA

好吧,官方为了安全原因屏蔽了HTTP2,那找个非官方的不就好了?

在 launchpad 上搜索了一下,发现了 ondrej/apache2 这个源,那就添加 PPA 吧:

sudo add-apt-repository ppa:ondrej/apache2

添加了之后就好办了,更新 Apache2

sudo apt update

sudo apt dist-upgrade

看一眼 Apache2 的版本…已经更新到了 2.4.20,启用 HTTP/2 模块吧,这次成功了,重启 Apache2 就好了

sudo a2enmod http2

sudo service apache2 restart

Enable PPA Apache2 Http2

二、HTTP/2 的配置

1、配置

HTTP/2 的配置区分 HTTP 和 HTTPS 协议,如果您使用 80端口(HTTP) 来访问您的网站,您需要在网站配置文件中添加

<VirtualHost x.x.x.x:80>
Protocols h2c http/1.1


</VirtualHost>

如果您是 443端口(HTTPS) 的话,添加

<VirtualHost x.x.x.x:443>
Protocols h2 http/1.1


</VirtualHost>

然后重启Apache

sudo service apache2 restart

2、测试

如果使用的是80端口(HTTP)的话,目前没有浏览器支持80端口的HTTP/2,只能通过 CURL 测试是否开启,测试代码如下:

curl -v –http2 http://<yourserver>/

通常情况下,CURL是没有HTTP2模块的,所以这里需要自己编译,暂时省略该测试,下面测试HTTPS

在火狐中,当你访问了HTTP/2协议的网站时,火狐会发送X-Firefox-Spdy,并设置为h2给服务器,你打开控制台刷新将会看到类似以下的结果

Test HTTP2 in Firefox

如果你用Chrome的话,你需要打开 chrome://net-internals/#http2 去查看当前使用 HTTP/2 的链接

Test HTTP2 in Chrome

那么,HTTP/2的性能如何呢?访问下面网址你就知道了

https://http2.akamai.com/demo

附上测试截图一枚

Test HTTP2

您可能还喜欢...

1 条回复

  1. 2018年4月8日

    […] 一番查阅,原来是 Ubuntu 16.04 是一个 LTS 版本,要稳定为主,而 mod_http2 是试验性的,所以旧不予加。 via 在 Ubuntu 上 开启 Apache2 HTTP/2 协议 […]

发表评论

电子邮件地址不会被公开。 必填项已用*标注