服务器 Nginx December 30 2015
今天看到淘宝的 Tengine
发布了2.1.2版本,看了一下 CHANGES 发现已经支持HTTP/2,支持向后兼容SPDY。马上动手进行更新,为现在的服务器加上帅气的HTTP/2。
HTTP/2的重要特性完全源自SPDY。(详见: 使用HTTP/2提升性能的7个建议 )
性能表现参照: HTTPS、SPDY和HTTP/2的性能比较
Tengine
开启 HTTP/2 步骤 首先 clone
或者 pull
更新 Tengine
最新代码并 checkout
到 2.1.2
git clone https://github.com/alibaba/tengine.git cd tengine # 或者在已有目录 : git pull git checkout 2.1.2
配置开启 http_v2_module
并 make
./configure --with-http_ssl_module --with-http_v2_module # 如果需要其他模块请参考:./configure --help make
检测编译结果:
$ objs/nginx -v Tengine version: Tengine/2.1.2 (nginx/1.6.2) # 如果看到 Tengine/2.1.2 就证明版本编译对了 $ objs/nginx -V # 结果中有 ngx_http_v2_module (static) 就是 HTTP/2 模块正常
更新 Tengine
或替换现有的 Nginx
# 查看现有 Nginx 的目录 $ which nginx /usr/sbin/nginx # 替换 Nginx $ sudo cp -f objs/nginx /usr/sbin/nginx
Nginx
配置中启用站点对 HTTP/2 的支持
在配置文件中移除所有 listen
命令包含的 spdy
模块变量,然后在 listen
时加上 http2
就可以了,例如:
listen 443 ssl http2 fastopen=3;
检测现有 Nginx
配置并重启
$ sudo nginx -t the configuration file /etc/nginx/nginx.conf syntax is ok configuration file /etc/nginx/nginx.conf test is successful # 如果显示 ok 以及 successful 就是没问题了 $ sudo service nginx restart
至此你的网站就已经有了 HTTP/2 了。
检验是否启用也很简单,在 Chrome 的开发者工具的 Network 选择卡,刷新网站就能看到相关的请求的 Protocol 从 http/1.1 变成了 h2 。
2.1.2的更新日志如下(详见: CHANGES.cn ):
ngx_http_reqstat_module
模块可以跟踪记录请求的内部重定向 ngx_debug_pool
模块协助分析内存状况 $upstream_cookie
变量 ngx_http_dyups_module
模块对相同后端服务器合并的问题 lua-upstream-nginx-module
模块的问题 ngx_http_concat_module
模块对javascript无效的问题