❗ 本文最后更新于 3384 天前,文中所描述的信息可能已发生改变,请谨慎使用。
在我之前的「开始使用 HTTP/2」这篇文章里,我提到过:Nginx 到年底才会支持 HTTP/2,于是本博客使用 H2O 这个 Web Server 提供 HTTP/2 服务。
8 月初,Nginx 官方博客发了一篇文章:「Announcing an Early Alpha Patch for HTTP/2」,也就是说 Nginx 终于开始对 HTTP/2 提供早期(Early Alpha)支持了。对于我这种以折腾为主的个人博客来说,没有理由不尝试一下。
注:从 Nginx 1.9.5 开始,http_v2_module 已经替换了 ngx_http_spdy_module,故本文 patch 这一步请直接跳过。另外,本文关于 Nginx 的安装和配置不再更新,请查看最新版:本博客 Nginx 配置之完整篇。
Nginx 新增了 http_v2_module 模块用于提供 HTTP/2 服务,这个模块是以 Patch 形式提供。官方对此有三点说明:
- 强烈不建议用于生产环境;
- 现阶段不支持 Server Push;
- 这个 Patch 会替换之前的 SPDY 模块,也就是说应用 Patch 后不能再给站点配置 spdy;
介绍完基本信息,下面简单写下如何让 Nginx 支持 HTTP/2:
现阶段的 HTTP/2 补丁需要 Nginx 1.9.0 以上的版本,建议直接去 Nginx 官网下载最新源码包(当前是 1.9.3),然后去 OpenSSL 或 LibreSSL(我用的是 LibreSSL)官网下载最新的 SSL 源码包并分别解压。
接着,进入解压好的 Nginx 源码目录,下载并应用补丁:
cd nginx-1.9.3
wget http://nginx.org/patches/http2/patch.http2.txt
patch -p1 < patch.http2.txt
配置时,至少需要启用 http_v2_module 和 http_ssl_module 这两个模块:
./configure --with-openssl=../libressl-2.2.2 --with-http_v2_module --with-http_ssl_module
然后 make
并 make install
就搞定了。在 Nginx 配置中启用站点对 HTTP/2 的支持也很方便,只需要在 listen
时加上 http2
就可以了,例如:
listen 443 ssl http2 fastopen=3 reuseport;
其他的配置之前的文章都写过,这里不重复了。另外,由于 HTTP/2 并不会使用 gzip 来压缩头部,之前用于 SPDY 的 spdy_headers_comp
配置已经不需要了,也就是说不会有类似于 http2_headers_comp
的配置。
经过一天的简单试用,我发现 Nginx 这个 HTTP/2 补丁的稳定性还可以,所以先这样用着,后续有什么发现再补充。
Update @ 17/08:今天发现我的博客在 firefox 下无法访问(测试了 OSX 10.11 EI Capitan 和 Windows 10),具体表现为 TLS 握手阶段连接被终止。其它浏览器都没有问题,在 Nginx 配置中去掉对 HTTP/2 的支持也能让 firefox 恢复正常。这个问题我暂时没找到原因,我决定先回滚到 H2O 的版本,后续有进展再补充。经过验证,是我的 SSL 加密方式配置问题,已经修复并切回 Nginx。
本文链接:https://imququ.com/post/nginx-http2-patch.html,参与评论 »
--EOF--
发表于 2015-08-16 23:08:30,并被添加「Nginx、HTTP2」标签。查看本文 Markdown 版本 »
专题「HTTP/2 相关」的其他文章 »
- 谈谈 Nginx 的 HTTP/2 POST Bug (Aug 20, 2016)
- 为什么我们应该尽快支持 ALPN? (May 18, 2016)
- 谈谈 HTTP/2 的协议协商机制 (Apr 14, 2016)
- 使用 nghttp2 调试 HTTP/2 流量 (Mar 07, 2016)
- 从启用 HTTP/2 导致网站无法访问说起 (Jan 17, 2016)
- 基于 HTTP/2 的 WEB 内网穿透实现 (Nov 23, 2015)
- HTTP/2:新的机遇与挑战 (Nov 22, 2015)
- HTTP/2 头部压缩技术介绍 (Oct 25, 2015)
- 使用 Wireshark 调试 HTTP/2 流量 (Oct 24, 2015)
- H2O 中的 Cache-Aware Server Push 简介 (Oct 21, 2015)
Comments
Waline 评论加载中...