HTTP/1.1自从发布以来,已经被广泛应用了相当长的时间了,当初网页以文本内容为主,现在网络内容的主体变得越来越多样化,而且对页面内容实时性传输的要求也越来越高(视频聊天、直播),HTTP/1.1协议已经无法满当前网络发展的需求了。
我们知道,浏览器对基于HTTP/1.1的传输协议的TCP连接数量会有限制,比如Chrome对同一个域名同时最多只能建立6个TCP连接,如果在同一个域名下同时有10个请求发生,那么其中4个请求会进入排队等待状态,直至进行中的请求完成。另外,HTTP/1.1在传输数据时,所有传输的内容都是明文,客户端和服务器端都无法验证对方的身份,这在一定程度上无法保证数据的安全性。
在 HTTP/2 中引入了多路复用的技术。多路复用很好的解决了浏览器限制同一个域名下的请求数量的问题,同时也接更容易实现全速传输,毕竟新开一个 TCP 连接都需要慢慢提升传输速度。
使用环境:
Ubuntu 18.04 php 7.1 apache 2.4.18执行下面的安装程序:
准备工作:
在开始之前,首先需要确认网站已经开启了HTTPS,目前主流的浏览器都已经支持HTTPS的HTTP2协议,本站已经安装了SSL证书。
同时,建议使用Apache 2.4.26以及更新的版本,以便开启HTTP2协议。
执行下面的命令来确认一下Apache的版本:
$ apache2 -v
通过输出的内容,我们看到本服务器正在使用的是 Apache 2.4.18。
在Apache虚拟机开启HTTP2
开始之前,确认一下网络服务器正在使用HTTP 1.1协议,可以通过Chrome浏览器访问网站,开启开发者模式,然后查看Network来确认本网站的HTTP协议版本。
接下来,执行下面的命令开启HTTP2模块:
$ sudo a2enmod http2
如果在执行“a2enmod http2”后,提示“module http2 not exist”,应该是Apache2版本过低,实际上,Apache 2.4.17或者更高版本就已经支持HTTP2模块了,但是为了更加的稳定,至少使用Apache 2.4.23以上版本,执行下面升级步骤:
$ sudo add-apt-repository -y ppa:ondrej/apache2
$ sudo apt-key update
$ sudo apt-get update
然后执行下面的命令:
$ sudo apt-get --only-upgrade install apache2 -y
下面可能需要输入Y进行确认,直接输入Y就可以了:
*** apache2.conf (Y/I/N/O/D/Z) [default=N] ?
接下来,继续执行启用HTTP2模块的命令:
$ sudo a2enmod http2
重启Apache2,使配置生效:
$ sudo systemctl restart apache2
然后到这里,http2安装成功。
接下来,编辑SSL虚拟主机的配置文件:
$ sudo vim /etc/apache2/sites-enabled/niuqi.com.conf
在<VirtualHost *:443>标签下面,增加如下的内容:
Protocols h2 http/1.1
保存并重启Apache2:
$ sudo systemctl restart apache2
重新启动后,从浏览器查看却并未开启http2协议,为什么我们配置完成了,HTTP2协议却未生效呢?原来如果你是使用的 Apache2+PHP 架构的应用程序,由于 mpm_prefork 模块不支持 mod_http2,所以我们需要切换 mpm_prefork、mod_php 到 mpm_event 和 php-fpm 来解决这个问题。
接下来,执行下面命令关闭php7.1和mpm_prefork模块:
$ sudo a2dismod php7.1 mpm_prefork
然后运行下面的命令启动mpm_event:
$ sudo a2enmod mpm_event
因为刚才对apache2进行了升级,需要重新开启重写模块:
$ sudo vim /etc/apache2/apache2.conf
将/var/www 目录的 none 改为All,
重启apache2:
$ sudo systemctl restart apache2
通过执行如下命令,来查看HTTP2是否开启成功:
$ curl -I --http2 -s https://domain.com/ | grep HTTP
开启成功会返回如下代码:
HTTP/2 200
使用Chrome浏览网页,打开开发者工具,就会发现本站已经成功升级至http2。
作者:牛奇网,本站文章均为辛苦原创,在此严正声明,本站内容严禁采集转载,面斥不雅请好自为之,本文网址:https://www.niuqi360.com/linux/enable-http2-speedup-wordpress/