原创文章,禁止转载!
HTTP/2(超文本传输协议第 2 版,最初命名为 HTTP 2.0),是HTTP 协议的的第二个主要版本,使用于 万维网 。HTTP/ 2 是HTTP 协议自 1999 年 HTTP 1.1 发布后的首个更新,主要基于 SPDY 协议。它由 互联网工程任务组 (IETF)的 Hypertext Transfer Protocol Bis(httpbis)工作小组进行开发。[1] 该组织于 2014 年 12 月将 HTTP/ 2 标准提议递交至 IESG 进行讨论[2],于 2015 年 2 月 17 日被批准。[3] HTTP/ 2 标准于 2015 年 5 月以 RFC 7540 正式发表。
HTTP/ 2 的目标包括异步连接 复用 ,头 压缩 和请求反馈 管线化 并保留与 HTTP 1.1 的完全语义兼容。httpbis 工作小组最初考虑了 Google 的SPDY协议、微软 的SM协议 [5] 和 Network-Friendly HTTP 更新 [6]。Facebook 对各方案进行了评价并最终推荐了 SPDY 协议[7]。HTTP 2.0 的首个草稿于 2012 年 11 月发布,其内容基本和 SPDY 协议相同[8]。
1. 版本要求
nginx 版本必须大于 1.9.5,nginx 版本 1.9.5 之后提供 HTTP/ 2 支持
openssl 版本为 1.0.2 后可用
请注意,通过 TLS 接受 HTTP / 2 连接需要“应用层协议协商”(ALPN)TLS 扩展支持,仅在 OpenSSL 版本 1.0.2 之后才可用
使用“下一协议协商”(NPN)TLS 扩展用于此目的(自 OpenSSL 版本 1.0.1 起可用)不能保证工作。
检查 nginx 版本
[root@node75 ~]# nginx -v
nginx version: nginx/1.13.0
检查 openssl 版本
[root@node75 ~]# openssl version
OpenSSL 1.0.1e-fips 11 Feb 2013
2. 安装编译
2.1 下载软件包
cd /data/install
wget http://nginx.org/download/nginx-1.13.0.tar.gz
wget https://www.openssl.org/source/openssl-1.0.2l.tar.gz
tar xvf nginx-1.13.0.tar.gz && tar xvf openssl-1.0.2l.tar.gz
cd nginx-1.13.0/
#需要高版本 openssl
./configure --prefix=/data/nginx --with-http_stub_status_module --with-http_ssl_module --with-http_flv_module --with-http_v2_module --with-openssl=/data/install/openssl-1.0.2l
make && make install
编译完成后检查 nginx 版本
[root@node75 nginx-1.13.0]# nginx -V
nginx version: nginx/1.13.0
built by gcc 4.8.5 20150623 (Red Hat 4.8.5-11) (GCC)
built with OpenSSL 1.0.2l 25 May 2017
TLS SNI support enabled
configure arguments: --prefix=/data/nginx --with-http_stub_status_module --with-http_ssl_module --with-http_flv_module --with-http_v2_module --with-openssl=/data/install/openssl-1.0.2l
编译成功
3. 配置示例
server {
listen 443 ssl http2;
server_name www.tangshengyun.com;
index index.jsp index.html index.htm;
ssl on;
浏览器访问测试
测试使用 chrome 浏览器插件 ”HTTP/2 and SPDY indicator” 进行测试, 显示蓝色即为支持