Ubuntu 18.04开启HTTP/2协议加速WordPress网站

HTTP/1.1自从发布以来,已经被广泛应用了相当长的时间了,当初网页以文本内容为主,现在网络内容的主体变得越来越多样化,而且对页面内容实时性传输的要求也越来越高(视频聊天、直播),HTTP/1.1协议已经无法满当前网络发展的需求了。

我们知道,浏览器对基于HTTP/1.1的传输协议的TCP连接数量会有限制,比如Chrome对同一个域名同时最多只能建立6个TCP连接,如果在同一个域名下同时有10个请求发生,那么其中4个请求会进入排队等待状态,直至进行中的请求完成。另外,HTTP/1.1在传输数据时,所有传输的内容都是明文,客户端和服务器端都无法验证对方的身份,这在一定程度上无法保证数据的安全性。

在 HTTP/2 中引入了多路复用的技术。多路复用很好的解决了浏览器限制同一个域名下的请求数量的问题,同时也接更容易实现全速传输,毕竟新开一个 TCP 连接都需要慢慢提升传输速度。

Ubuntu 18.04开启HTTP/2协议加速WordPress网站
HTTP/1.1与HTTP/2的数据传输对比

使用环境:

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协议版本。

Ubuntu 18.04开启HTTP/2协议加速WordPress网站
确认HTTP协议版本

接下来,执行下面的命令开启HTTP2模块:

$ sudo a2enmod http2
Ubuntu 18.04开启HTTP/2协议加速WordPress网站
启动HTTP/2模块

如果在执行“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
Ubuntu 18.04开启HTTP/2协议加速WordPress网站
在Apache上启动HTTP/2

保存并重启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
Ubuntu 18.04开启HTTP/2协议加速WordPress网站
检查HTTP/2 安装情况

开启成功会返回如下代码:

HTTP/2 200 

使用Chrome浏览网页,打开开发者工具,就会发现本站已经成功升级至http2。

Ubuntu 18.04开启HTTP/2协议加速WordPress网站
确认HTTP协议的版本

原创文章,作者:牛奇网,如若转载,请注明出处:https://www.niuqi360.com/lamp-config/enable-http2-speedup-wordpress/

发表评论

登录后才能评论