Http/2,超文本传输协议第二版,最初命名为http2.0,是http协议的第二个版本,使用于万维网。
它是HTTP协议自1999年HTTP 1.1发布后的首个更新,主要基于SPDY协议。
随着http2的标准的确定,各大浏览器的大力支持,http2这个字眼开始出现在我们的视野里。
为什么要使用http2呢,它和之前的http有什么区别?
相对于http1.1的优点
1 2 3 4 5 6 7 8
| 1.多路复用、请求优化:一个连接内可以有无限个并行的请求即允许多个并行的http请求共用一个tpc连接。 多路复用还可以设置优先级,让重要的资源先行。
2.压缩了 HTTP 头:多个请求
3.支持服务器推送:可以将一些资源直接通过服务器推送到用户端,减少请求次数。
4.强制使用SSL传输协议
|
Http2的安装注意事项
1 2 3 4 5 6 7 8 9
| 1.Http2是基于https的,因此,在使用Http2之前,首先需要弄好https,也就是需要申请网站证书。 我这里用的是腾讯云的主机、腾讯云的域名、腾讯云的证书(买域名免费用,文章后面有传送门,https证书的申请、证书的安装)。
2.需要Nginx版本1.9.5及以上。 从最新发布的 Nginx 1.9.5 开始,httpv2module 已经替换了 ngxhttpspdy_module 并正式开始提供全面的 HTTP/2 支持。
3.openssl版本1.0.2及以上。 Http2 需要扩展支持,可以用的有 ALPN 和 NPN 两种(Chrome 已经移除了对 NPN 的支持) 为了使用 ALPN 需要将 OpenSSL 升级到 1.0.2 以上版本。
|
ps:
本人就是卡在这里卡了几天,折腾了好久最终重装了ubuntu系统 Ubuntu Server 16.04.1。
因为,Ubuntu 16.04 LTS 1.0.2g,之前的版本自带的openssl都不支持http2
当然爱折腾的也可以在不升级系统的情况下,自己安装新的openssl、然后进行一系列的重新编译nginx
查看nginx和openssl版本
1 2 3
| openssl version # LibreSSL 2.2.7 nginx -v # nginx version: nginx/1.10.1 nginx -V # 同上
|
http2配置
在上面https的配置里面找到之前配置443的地方,加上一个http2就可以了
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| server { listen 443 http2; server_name localhost; ssl on; ssl_certificate 1_www.domain.com_bundle.crt; ssl_certificate_key 2_www.domain.com.key; ssl_session_timeout 5m; ssl_protocols TLSv1 TLSv1.1 TLSv1.2; ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE; ssl_prefer_server_ciphers on; location / { root html; index index.html index.htm; } }
|
至此,正http2环境已经搭建完成,刷新页面,就可以看见网站的请求已经变成了http2了
eg:https://www.epoos.com/
相关链接
caniuse http2的兼容性
https证书申请
https证书安装
Supporting HTTP/2