w3ctech

NGINX 1.95发布并开源,支持HTTP/2

NGINX 1.95发布并开源,支持HTTP/2

在早些年,我们在开源NGINX产品上集成了early-alpha补丁来支持HTTP2.0,上个礼拜在NGINX PLUS上完全实现了HTTP2.0所有特性。今天,我们非常自豪地宣布,HTTP2.0已经被提交到开源组织的报告中,并且可以通过官方提供NGINX下载链接获取(HTTP2.0已经作为了1.95版本NGINX的一部分)。
如果你想了解更多关于HTTP2.0的内容,我们提供以下的资源:

  1. 请阅读我们的白皮书(囊括了任何你想了解关于HTTP2.0的内容)
  2. 下载高性能浏览器的网络流电子书特别版(由google工程师Ilya Grigorik编写)

请着重注意,发布的1.9.5版NGINX已经不再支持SPDY。在NGINX 1.9.x分支中,我们已经从底层代码中完全移除了SPDY模块,然后用HTTP2.0模块来代替SPDY模块。到了1.9.5版本后,你就不再需要为了使用SPDY模块来配置NGINX。如果你真的想继续使用SPDY模块,那么我们将会在NGINX 1.8.x分支中来继续支持SPDY模块。

通过使用NGINX 1.9.5实现HTTP1.0到HTTP2.0的转变

为了支持HTTP2.0,这个部分需要经历一些必要的改变,包括NGINX配置方面的改变。

前提条件

在升级前,请在配置文件中移除所有listen命令包含的spdy模块变量。这样的话可以确保升级更顺畅,安装或者更新NGINX可以使用我们的预先构建的二进制文件。具体说明可以从这里获取

将HTTP请求重定向到使用SSL/TLS加密的站点

如果你的应用没有使用SSL/TLS加密等加密技术,现在无疑是个大好时机,使用上面的加密技术可以保护你的app应用免受间谍攻击以及中间人攻击。一些搜索引擎甚至会通过在搜索结果中提升排名的方式来奖励加密站点。下列配置版块会将所有简单的HTTP请求重定向到加密后的网站。

server  
{  

    listen 80;  
    location / {  
        return 301 https://  $host$request_uri;  
    }
}

支持HTTP2.0

为了使NGINX支持HTTP2.0,只要在所有listen命令中增加http2参数。也包括增加ssl参数,因为浏览器不支持没有加密的HTTP2.0请求

server {

    listen 443 ssl http2 default_server;

    ssl_certificate    server.crt;
    ssl_certificate_key server.key;
    ...
}

如果可能的话,重启NGINX,例如运行nginx -s reload命令。为了验证HTTP2.0转义是否正在运行,你可以在chrome和firefox上以插件的形式运行HTTP2.0和SPDY模块的指示器

注意事项

  1. 如果你在NGINX服务器的前面(请求所到达的上一站)使用web应用防火墙(WAF),请确保WAF具有解析HTTP2.0的能力,否则将WAF移至NGINX的后面。
  2. 在这个版本中不支持HTTP2.0的Server Push功能
  3. 如果ssl_prefer_server_ciphers被设置成on状态或者ssl_ciphers(声明在 Appendix A: TLS 1.2 Ciper Suite Black List)的列表已被使用,浏览器将会遭遇握手错误然后不工作。关于更多细节请参考HTTP2.0的9.2.2模块
前端圈微信

扫码关注前端圈微信公众号

共收到0条回复