在Nginx/Openresty中启用http2支持
2024-08-28 17:40:36
转自个人博客 chinazt.cc
以下摘自http2的介绍:
HTTP/2 源自 SPDY/2
SPDY 系列协议由谷歌开发,于 2009 年公开。它的设计目标是降低 50% 的页面加载时间。当下很多著名的互联网公司,例如百度、淘宝、UPYUN 都在自己的网站或 APP 中采用了 SPDY 系列协议(当前最新版本是 SPDY/3.1),因为它对性能的提升是显而易见的。主流的浏览器(谷歌、火狐、Opera)也都早已经支持 SPDY,它已经成为了工业标准,HTTP Working-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 做到了真正的并发请求。同时,流还支持优先级和流量控制。
Server Push:服务端能够更快的把资源推送给客户端。例如服务端可以主动把 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
wget https://www.openssl.org/source/openssl-1.0.2l.tar.gz
tar -zxvf openssl-1.0.2l.tar.gz
- 生成编译信息
./configure --with-http_v2_module --with-openssl=/openssl-1.0.2l
- 执行编译
make
make install
如果不报错,则编译成功。 下面来修改nginx配置文件,重点就是在启用443 ssl的地方启用http2. 如下:
server {
listen 443 ssl http2;
..........
}
执行reload,打开网页验证是否成功。
如果感觉编译麻烦,可以使用我已经编译好的openresty:
vikings/openresty:http2
最新文章
- 编写自己的PHP MVC框架笔记
- hadoop 2.7.2 + zookeeper 高可用集群部署
- MS SQL Server存储过程
- enhance convenience rather than contribute to the fundamental power of the language
- linux下centos安装android sdk最新全面教程【可行】
- kettle Java Filter(表达式过滤)
- IIS Web服务扩展中添加ASP.NET4.0
- 华为OJ:查找字符的第一个字符串只出现一次
- POJ 3468<;线段树,区间add>;
- Hadoop:Hadoop基本命令
- 一分钟了解Allegro导入DXF文件
- Trie for string LeetCode
- 段的性能统计信息v$segment_statistics
- Linux—日志查看(测试人员)
- Kafka技术内幕 读书笔记之(五) 协调者——延迟的加入组操作
- Marriage Match IV(最短路+网络流)
- [中英对照]Linux kernel coding style | Linux内核编码风格
- 同一页面中引入多个JS库产生的冲突解决方案(转)
- 阿里云服务器ECS按ctrl+alt+delete无法登录
- 由上一个血案引发的关于property和attribute关系的思考