我在CloudFlare机器后面运行nginx版本:1.12.1。 CloudFlare正面是启用了http2。
我想知道是否升级到支持http2的Nginx 1.9.5是个好主意? 升级的成本很高。 我的Linode centos是
CentOS的释放,7-3.1611.el7.centos.x86_64
而通过rpm版本库的默认Nginx包仍然是Nginx 1.12。
在CloudFlare机器后面升级Nginx版本是否具有显着的优势?
编辑:画我天真,但我认为1.12低于1.9。 傻我。 回到第二个问题,这是否会产生影响?
CloudFlare 不使用HTTP / 2访问原始服务器 ,只访问HTTP / 1.1。 我可以确认这看我的服务器日志。
正因为如此,如果您的服务器只能被CloudFlare访问,那么启用HTTP / 2就没有意义了。
更新
为了扩大答案,CloudFlare在他们的CDN和客户端浏览器之间使用HTTP / 2。 这为浏览器带来了性能提升。 与原点的后端连接并不重要,因为在大多数网站上,大部分资源都被caching了。
如果他们使用HTTP / 2,它可能会稍微加快速度,但是他们是一个很好的公司,如果这是一个有用的事情,他们最终会做。
centos-release-7.3.1611.el7.centos.x86_64是你安装的CentOS的版本,而不是nginx的版本。
你目前安装的nginx 1.12.1是一个比1.9.5更新的版本(因为12大于9)。 只要您使用的二进制文件是使用http2启用的,您应该可以在不改变您的nginx版本的情况下使用该function。
正如其他人所提到的,Cloudflare目前不会将HTTP / 2与原始服务器通话,所以在原始服务器中实现HTTP / 2几乎没有什么优势。
HTTP / 2的主要优势在于低延迟连接,如浏览器到服务器,Cloudflare已经通过HTTP / 2服务资源。 服务器到服务器连接的好处较less。
另外Cloudflare使用Nginx的一个版本,目前它不支持HTTP / 2到服务器端, Nginx已经声明他们没有添加它的意图 :
HTTP / 2代理支持计划在不久的将来?
简短的回答:
不,没有计划。
很长的回答:
实现它几乎是没有意义的,因为HTTP / 2的主要好处是它允许在单个连接内复用多个请求,因此[几乎]消除了对最大请求数量的限制 – 并且在与你自己的后端。 而且,使用HTTP / 2作为后端时,情况甚至会变得更糟,因为使用单个TCP连接而不是多个连接。
另一方面,在上游模块的单个连接中实现HTTP / 2协议和请求多路复用将需要对上游模块进行重大改变。
由于上述原因,至less在可预见的将来,没有计划在上游模块中实现HTTP / 2支持。 如果您仍然认为通过HTTP / 2与后端交谈是需要的 – 随时提供补丁。
您可能会同意或不同意上述内容,但在写入(2015年)时似乎相当确定,而且从未发现过更新,虽然这个请求在 4个月前重新开放 ,并且已经公开。
这并不是说Cloudflare不会自行完成( 就像Nginx支持之前的服务器推送一样 ),但是我认为在他们所基于的核心平台上,它是不太可能的不支持这个。
最后你说你在Centos 7.3上。 这有一个旧版本的OpenSSL(1.0.1),它不支持在基于Chromium的浏览器(Chrome和Opera)上使用HTTP / 2所需的ALPN,以及未来可能会有更多这样的HTTP / 2客户端,所以这可能是必需的并将在未来实施Cloudflare。 最近发布的Centos 7.4确实包含了OpenSSL 1.0.2,它在理论上支持ALPN,但是在编写本文时,Nginx的打包版本仍然使用旧版本进行编译,所以对此尚无帮助。 看到这个博客文章的更多细节 。 所以,这不仅仅是升级Nginx的问题,还有操作系统和/或OpenSSL,即使这样也不会有帮助。 当然,有一些方法可以解决这个问题(从源代码安装,在Docker镜像中运行,而不是等),但是如果你说单独升级Nginx的成本是很重要的,那么我想这些额外的东西真的要钉在那棺材里
总而言之,我会说现在已经足够好了,只需要享受你提供的HTTP / 2支持,并由Cloudflarepipe理。 实际上,获取HTTP / 2的最简单方法之一就是使用像Cloudflare这样的服务,而不必在自己的基础设施上实现这一点。
你说你已经安装了Nginx 1.12.1,并且(正确)Nginx从1.9.5版本开始支持HTTP / 2。
既然你已经有一个更新的版本,我不明白你为什么要谈论升级的需要。 (你目前似乎有最新的稳定版本。)
看来你应该是所有设置版本明智的,可能只是需要一个configuration更改(添加http2相关的SSL listen指令)。