Site Loader

什么是HTTP/2?

HTTP/2 即超文本传输协议 2.0,是下一代HTTP协议。是由互联网工程任务组(IETF)的Hypertext Transfer Protocol Bis (httpbis)工作小组进行开发。是自1999年http1.1发布后的首个更新。HTTP 2.0在2013年8月进行首次合作共事性测试。在开放互联网上HTTP 2.0将只用于https://网址,而 http://网址将继续使用HTTP/1,目的是在开放互联网上增加使用加密技术,以提供强有力的保护去遏制主动攻击。

目前使用得最多的是HTTP/1.1,那HTTP/2到底有什么优势?

上一张测试对比图,左图使用HTTP/1.1,右图使用HTTP/2,两张图片均由379个小图组成,测试彼此的加载时间。
胜负非常明显,加载内容多的时候HTTP/2极具优势。
想了解更多HTTP/2.0内容,可网上搜索相关资料。

有兴趣的话可以到https://http2.akamai.com/demo测试一下。

以下将介绍如何开启apache2的HTTP/2,以优化Nextcloud的性能。

当然,HTTP/2不只适用于Nextcloud的优化加速,这里只是以Nextcloud做为一个范例。

HTTP/2本身并不要求https加密连接,但出于安全考虑,大部份浏览器及服务器都要求HTTP/2基于https加密连接。
那么在进行以下操作前,请为Nextcloud部署https。可参考本站《申请免费SSL证书,让你的网站更安全》

Nextcloud所在服务器环境:

  • 操作系统:Ubuntu 18.04 LTS 64Bit
  • NextCloud:NextCloud Server 16.0.3
  • PHP版本:7.3.8
  • Apache2:2.4.29
  • OpenSSL:1.1.1c

开启HTTP2必需符合以下条件:

  • Apache2版本需2.4.17及其更高版本
  • OpenSSL版本需1.0.2及其更高版本

查看Apache2版本可通过以下命令:

apache2 -v

查看OpenSSL版本可通过以下命令:

openssl version

安装php7.3-fpm

apt install php7.3-fpm

开启proxy_fcgi模块

a2enmod proxy_fcgi

启动相关配置文件

a2enconf php7.3-fpm

关闭php模块

a2dismod php7.3

关闭mpm_prefork模块

a2dismod mpm_prefork

开启mpm_event模块

a2enmod mpm_event

开启HTTP2模块

a2enmod http2

修改Nextcloud对应的https虚似主机配置文件

配置文件一般在 /etc/apache2/sites-available目录下,在<VirtuaHost _default_:443>下添加Protocols h2 http/1.1,如下图:

重启apache2

service apache2 restart

验证Nextcloud是否已开启HTTP2

打开HTTP2.0支持检测网页https://myssl.com/http2_check.html,输入要检测的网站以及端口号,这里只支持https检测,点击【检测】,页面将显示检测结果,如下图:

另外,也可以通过前端调试神器firefox浏览器进行检测。按F12打开firefox的调试工具,选择【网络】,地址栏输入要检测地址,等待页面加载完毕,左边选择一条记录,在右框中点击【消息头】,将看到HTTP的版本,如正确开启,将显示HTTP/2.0,否则显示HTTP/1.1。

这里需要注意的是,当启用php-fpm后,所调用的php.ini配置文件将有所变更,如笔者的php7.3,原本调用的是/etc/php/7.3/php.ini,启用php-fpm后,配置文件将变成/etc/php/7.3/fpm/php.ini。
这将有可能导致Nextcloud后台的警告提示再次出现,这时只要针对问题修改 /etc/php/7.3/fpm/php.ini 即可。
重启php-fmp,问题将解决。命令如下:

service php7.3-fpm restart

至此,已成功开启HTTP2。

Post Author: 记忆深潜

发表评论

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