前段时间,Nginx 曾发布过一个 early-alpha patch 来提供对HTTP/2的支持,但从最新发布的 Nginx 1.9.5 开始,http_v2_module 已经替换了 ngx_http_spdy_module 并正式开始提供全面的HTTP/2支持。
如果你想了解更多关于 HTTP/2 的信息,Nginx 官方提供了如下供大家参考:
注意:此版本移除了对 SPDY 的支持,从 Nginx 1.9.x 分支开始已经完全移除了 SPDY 模块的代码库并用 HTTP/2 模块进行取代。因此在升级到 Nginx 1.9.5 后将不能再使用 SPDY。如果你想继续使用 SPDY,请继续留在 Nginx 1.8.x 分支。
迁移到支持HTTP/2的Nginx 1.9.5
接下来将向大家介绍启用 HTTP/2 时的几个 Nginx 配置变化。
前提条件:
在升级之前,请先删除 Nginx 配置文件中的所有 SPDY 参数,这将有助于顺利升级。
重定向所有通信到SSL/TLS:
如果你的网站尚未采用 SSL/TLS 进行加密,现在可以考虑将其加密。对 Web 流量进行加密可以保护网站通讯免受中间人攻击,还有助于 Google 排名的提升。下面的配置会将所有普通 HTTP 请求重定向到加密网站。
server {
listen 80;
location / {
return 301 https://$host$request_uri;
}
}
启用HTTP/2
要启用 HTTP/2 支持只需将 http2 添加到所有 listen 指令当中:
server {
listen 443 ssl http2 default_server;
ssl_certificate server.crt;
ssl_certificate_key server.key;
...
}
更改完配置后需要重启 Nginx 使之生效,要验证 HTTP/2 是否正常工作可以使用 Google 或 Firefox 的 HTTP/2 and SPDY indicator 插件。