Nginx 开始对 HTTP/2 提供早期支持了

8 月初,Nginx 官方博客发了一篇文章:「Announcing an Early Alpha Patch for HTTP/2」,也就是说 Nginx 终于开始对 HTTP/2 提供早期(Early Alpha)支持了。对于我这种以折腾为主的个人博客来说,没有理由不尝试一下。

Nginx 开始对 HTTP/2 提供早期支持了

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 的版本,后续有进展再补充。

更多Nginx相关教程见以下内容

CentOS 6.2实战部署Nginx+MySQL+PHP

使用Nginx搭建WEB服务器

搭建基于Linux6.3+Nginx1.2+PHP5+MySQL5.5的Web服务器全过程

CentOS 6.3下Nginx性能调优

CentOS 6.3下配置Nginx加载ngx_pagespeed模块

CentOS 6.4安装配置Nginx+Pcre+php-fpm

Nginx安装配置使用详细笔记

Nginx日志过滤 使用ngx_log_if不记录特定日志

Nginx 的详细介绍请点这里
Nginx 的下载地址请点这里

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/aa59b4d79718718a4fd0cacbfedeeca1.html