Nginx启用HTTP/2协议指南

开篇先简单介绍一下什么是HTTP/2协议,以下内容引用自百度百科:

HTTP 2.0即超文本传输协议 2.0,是下一代HTTP协议。是由互联网工程任务组(IETF)的Hypertext Transfer Protocol Bis (httpbis)工作小组进行开发。是自1999年http1.1发布后的首个更新。HTTP 2.0在2013年8月进行首次合作共事性测试。在开放互联网上HTTP 2.0将只用于https:// 网址,而 http:// 网址将继续使用HTTP/1,目的是在开放互联网上增加使用加密技术,以提供强有力的保护去遏制主动攻击。

8月初,Nginx 官方博客发了一篇文章:「Announcing an Early Alpha Patch for HTTP/2」,也就是说 Nginx 开始对 HTTP/2 提供早期(Early Alpha)支持了。为了尝试下一代 HTTP 协议带来的效果,我决定在我的博客体验下这个协议带来的效果。

根据官方的指南,为了体验HTTP/2协议,你需要按照如下步骤来启用:

1.安装openssl 1.0.2或更新的版本,这个网上教程很多,我安装了1.0.2e,直接源码编译安装即可。
2.下载nginx 1.9.0或更新的版本,并解压缩,我下载了1.9.3

1
2
3
wget http://nginx.org/download/nginx-1.9.3.tar.gz
tar zxvf nginx-1.9.3.tar.gz
cd nginx-1.9.3

3.下载HTTP/2的支持patch,并打上该patch

1
2
wget http://nginx.org/patches/http2/patch.http2.txt
patch -p1 < patch.http2.txt

4.编译安装,参数可以参考你之前的参数,我附上我的编译参数

1
2
./configure --user=www --group=www --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module --with-http_gzip_static_module --with-ipv6 --with-http_v2_module --with-openssl=/root/openssl-1.0.2d/
make

5.配置并重启nginx

1
2
3
4
5
6
server
{
listen 443 ssl http2;
server_name jayshao.com www.jayshao.com;
...
}

1
2
/usr/local/nginx/sbin/nginx -t #测试配置文件的准确定
/usr/local/nginx/sbin/nginx -s reload #重启nginx

6.通过chrome可以查看HTTP/2的启用情况。