本文概述
HTTP/2是2015年发布的第二个主要版本HTTP协议。
自发布以来, 大约11%的网站支持HTTP/2。
它具有许多功能, 例如:
- HTTP标头压缩
- 推技术
- 通过单个TCP连接并行加载页面元素
- 二进制协议
- 减少延迟
AKAMAI的演示显示HTTP/2大约比HTTP/1.1快两倍
你是否知道LiteSpeed是最早支持HTTP/2的Web服务器之一?
如果你正在使用CDN(例如Cloudflare, Incapsula, MaxCDN), 则可能不需要在Web服务器中启用HTTP/2, 因为可以从CDN网络边缘进行操作。
但是, 如果你需要在Web服务器(例如Apache, Nginx, IIS)中实现HTTP/2, 则可以按照以下方法进行操作。
注意:当前, 所有浏览器仅通过HTTPS支持HTTP/2协议。你的Web服务器必须配置有SSL证书才能支持HTTP/2。
但是请不要担心, 如果你正在做一些实验, 则可以免费获得SSL证书。
在Apache HTTP中实现HTTP/2
可以使用mod_http2模块将HTTP/2部署在Apache HTTP 2.4.17或更高版本中。因此, 如果你具有2.2或更低版本, 则首先必须升级到兼容版本。
让我们使用mod_http2, mod_ssl模块编译Apache HTTP。
- 下载最新版本(我将在Linux上执行2.4.25)
- 解压缩下载的文件, 如果你下载了.gz文件, 则
gunzip -c httpd-2.4.25.tar.gz | tar xvf -
- 你将看到一个新的文件夹创建, 进入其中
- 使用configure命令从源代码构建Apache
注意:如果你在全新的服务器上尝试此操作, 则可能会在安装依赖项时遇到错误, 本指南应对此提供帮助。
./configure --enable-ssl --enable-so --enable-http2
- 确保完成以上命令后没有错误, 请执行以下make命令
make
make install
可以得出结论, Apache HTTP已安装了HTTP/2模块, 现在该进行必要的配置了。
- 备份httpd.conf文件(默认位置/etc/httpd/conf/httpd.conf)
- 使用vi打开httpd.conf文件, 并确保以下内容存在(如果不存在), 然后添加它。
LoadModule http2_module modules/mod_http2.so
- 接下来, 你需要添加Protocols指令, 如下所示
Protocols h2 h2c http/1.1
如果要为单个虚拟主机启用HTTP/2, 则需要在相应的VIrtualHost下添加协议。
注意:以上Protocols指令中包含三个参数
- h2 –指示Apache通过SSL/TLS支持HTTP/2协议
- h2c –指示Apache通过TCP支持HTTP/2
- http/1.1-如果客户端不接受HTTP/2, 则可以通过HTTP/1.1提供请求
重新启动Apache HTTP服务器以重新加载配置。
现在, 已启用Apache HTTP实例以支持HTTP/2协议。
在Nginx中实现HTTP/2
Nginx 1.9.5或更高版本支持HTTP/2, 因此首先必须确保已安装兼容版本。
在Nginx中启用HTTP/2只是在listen指令中添加http2参数的问题。
- 与往常一样, 备份nginx.conf文件(默认位置/etc/nginx/nginx.conf)
- 使用vi进行修改并在listen指令下添加http2
server {
listen 443 http2 ssl chandan.io;
…....
}
如上所述, HTTP/2仅受HTTPS支持, 因此必须在具有SSL配置的服务器块下添加。
如果你的SSL配置位于nginx.conf以外的其他文件中, 则必须在那里进行更新。
完成后, 重新启动Nginx以便激活配置。
验证网站是否支持HTTP/2
有多种方法可以检查网站是否支持HTTP/2。
手动–打开IE/Chrome/Firefox, 然后按F12 >>转到”网络”标签, 你应该看到协议为HTTP/2
在线–你可以使用HTTP/2测试工具
今天就这些了。我希望以上内容可以帮助你在Apache和Nginx Web服务器中启用HTTP/2协议, 以快速加载Web页面。