1、http/2 的优势
- 二进制协议:相比于HTTP 1.x基于文本的解析,HTTP/2将所有的传输信息分割为更小的消息和帧,并对它们采用二进制格式编码。基于二进制可以使协议有更多的扩展性,例如,引入帧来传输数据和指令
- 内容安全:HTTP/2基于HTTPS,具有安全特性。使用HTTP/2特性可以避免单纯使用HTTPS引起的性能下降问题
- 多路复用(MultiPlexing):通过该功能,在一条连接上,您的浏览器可以同时发起无数个请求,并且响应可以同时返回。另外,多路复用中支持了流的优先级(Stream dependencies)设置,允许客户端告知服务器最优资源,可以优先传输
- Header压缩(Header compression):HTTP请求头带有大量信息,而且每次都要重复发送。HTTP/2采用HPACK格式进行压缩传输,通讯双方各自缓存一份头域索引表,相同的消息头只发送索引号,从而提高效率和速度
- 服务端推送(Server push):同SPDY一样,HTTP/2也具有客户端推送功能。目前,大多数网站已经启用HTTP/2,如淘宝。使用浏览器Chrome登录控制台,您可以查看是否启用HTTP/2
2、开启 http/2 的前提条件
- Nginx 版本 >= 1.9.5
- OpenSSL 版本 >= 1.0.2
- 配置 HTTPS 证书
- 启用 TLS 1.2 或者更高版本的协议(比如TLS 1.3)
3、openresty 编译时要加上 --with-http_v2_module 参数即可
// 参考编译参数
./configure --prefix=/usr/local/openresty --with-luajit --with-pcre --with-http_iconv_module --with-http_realip_module --with-http_sub_module --with-http_stub_status_module --with-stream --with-stream_ssl_module --with-http_v2_module
4、站点配置
server {
listen 443 http2;
server_name www.foobar.com;
access_log logs/access.log main;
index index.htm index.html;
ssl on;
ssl_certificate /usr/local/openresty/nginx/conf/cert/www.foobar.com.pem;
ssl_certificate_key /usr/local/openresty/nginx/conf/cert/www.foobar.com.key;
ssl_session_timeout 5m;
ssl_session_cache shared:SSL:10m;
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 /data/foobar/;
}
}
5、最终效果

参考:
- https://www.digitalocean.com/community/tutorials/how-to-set-up-nginx-with-http-2-support-on-ubuntu-18-04
- https://www.howtoforge.com/how-to-enable-http-2-in-nginx/
- https://www.nginx.com/blog/http2-module-nginx/
- https://www.nginx.com/blog/http2-theory-and-practice-in-nginx-stable-13/
- https://help.aliyun.com/document_detail/59894.html
网友评论