Nginx/Openresty中启用http2支持的方法教程
本文主要给大家介绍了关于Nginx/Openresty启用http2支持的相关内容,在开始介绍之前,我们先来看一看什么是http2。
以下摘自http2的介绍:
HTTP/2源自SPDY/2
SPDY系列协议由谷歌开发,于2009年公开。它的设计目标是降低50%的页面加载时间。当下很多著名的互联网公司,例如百度、淘宝、UPYUN都在自己的网站或APP中采用了SPDY系列协议(当前最新版本是SPDY/3.1),因为它对性能的提升是显而易见的。主流的浏览器(谷歌、火狐、Opera)也都早已经支持SPDY,它已经成为了工业标准,HTTPWorking-Group最终决定以SPDY/2为基础,开发HTTP/2。
但是,HTTP/2跟SPDY仍有不同的地方,主要是以下两点:
- HTTP/2支持明文HTTP传输,而SPDY强制使用HTTPS
- HTTP/2消息头的压缩算法采用HPACK,而非SPDY采用的DEFLATE
HTTP/2的优势
相比HTTP/1.x,HTTP/2在底层传输做了很大的改动和优化:
HTTP/2采用二进制格式传输数据,而非HTTP/1.x的文本格式。二进制格式在协议的解析和优化扩展上带来更多的优势和可能。
HTTP/2对消息头采用HPACK进行压缩传输,能够节省消息头占用的网络的流量。而HTTP/1.x
每次请求,都会携带大量冗余头信息,浪费了很多带宽资源。头压缩能够很好的解决该问题。多路复用,直白的说就是所有的请求都是通过一个TCP连接并发完成。HTTP/1.x虽然通过pipeline也能并发请求,但是多个请求之间的响应会被阻塞的,所以pipeline至今也没有被普及应用,而HTTP/2做到了真正的并发请求。同时,流还支持优先级和流量控制。
ServerPush:服务端能够更快的把资源推送给客户端。例如服务端可以主动把JS和CSS文件推送给客户端,而不需要客户端解析HTML再发送这些请求。当客户端需要的时候,它已经在客户端了。HTTP/2主要是HTTP/1.x在底层传输机制上的完全重构,HTTP/2是基本兼容HTTP/1.x的语义的(详细兼容性说明请戳这里)。Content-Type仍然是Content-Type,只不过它不再是文本传输了。
Openresty/Nginx默认是不支持http2的,需要将http2模块编译进应用中。
下面我们以Openresty为例,介绍编译步骤.
下载openssl-1.0.2l
wgethttps://www.openssl.org/source/openssl-1.0.2l.tar.gz tar-zxvfopenssl-1.0.2l.tar.gz
生成编译信息
./configure--with-http_v2_module--with-openssl=/openssl-1.0.2l
执行编译
make makeinstall
如果不报错,则编译成功。
下面来修改nginx配置文件,重点就是在启用443ssl的地方启用http2.如下:
server{ listen443sslhttp2; .......... }
执行reload,打开网页验证是否成功。
如果感觉编译麻烦,可以使用我已经编译好的openresty:
vikings/openresty:http2
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对毛票票的支持。