我想在Apache 2.4.16上使用HTTP2(可能需要升级到2.4.17),并偶然发现了官方Apache页面上的这个评论。
警告
这个模块是实验性的。 与其他标准模块相比,其行为,指令和默认值从发布到发布的变化都有所不同。 鼓励用户咨询“CHANGES”文件以获取潜在更新。
另一方面,许多其他人正在做如何启用它的教程。 那么使用它是安全的还是应该等待?
另外,我们可以将HTTP2与反向代理结合使用吗?
****更新:从Apache 2.4.26开始,mod_http2不再被认为是实验性的。 下面的答案已经更新,以反映这个*****
实验标签是在第一次添加function时添加的,正如文中所解释的那样,警告实现,选项和API可能会改变。 因此,如果使用实验function,则应在安装任何后续更新时仔细阅读更改文件 ,以确保您了解需要进行的任何更改。
实验标签并不意味着实现是不稳定的。 不稳定的选项通常不会直接添加到主Apache源代码树中,而是作为单独的可安装模块进行处理。
说到使用HTTP / 2,你至less需要升级到2.4.17,但是由于这个模块改变了很多,所以确实要升级到最新的(2.4.26),并且有了一些bug自推出以来的性能改进,甚至已经解决了多个CVE(包括: 2016-1546,2016-8740和2017-7659 )。 这并不是说它特别有问题或危险,Apache中还有很多其他CVE(以及其他所有软件),但这意味着您确实应该运行最新版本。
您还需要针对OpenSSL 1.0.2进行编译,以使用Chrome和Firefox(因为它们只允许使用较新的ALPN协议,而不使用较旧的NPN协议来协商HTTP / 2连接),这可能是一个额外的痛苦,因为大多数软件包经理们还没有包括这个。 从2.4.26开始,Apache也支持OpenSSL 1.1。
运行更新的版本,并从源代码编译,而不是从包pipe理器(例如yum或APT)编译需要额外的努力和纪律(因为它们不会像安装或修补那样容易),这超出了你的问题的范围,有些东西要轻易进入。 这一切都假设你在Linux上。 如果你在Windows上,那么你可能已经分别下载和安装。
最后是你的问题的真正症结所在。 在Apache 2.4.26发行版中,主mod_http2模块的实验性警告被删除了,虽然它仍然适用于较新的mod_proxy_http2模块。 自从2.4.17以来,我自己在自己的博客网站上运行了HTTP / 2,并且从来没有遇到任何实际的问题。 对我来说似乎足够稳定。 然后我再也不会遇到大量的stream量,如果这个stream量下降,对我来说也不是什么大事。 我会运行一个真正的生产网站吗? 可能直到实验警告消除(2.4.26)。 再一次,唯一的办法就是人们试用。 HTTP / 2也很容易closures,如果它确实造成问题。 基本上完全取决于你的风险偏好。 您可以阅读(和订阅)GitHub上的已知问题列表( https://github.com/icing/mod_h2/issues ),模块作者的响应速度非常快,而且非常有帮助。
不知道你对反向代理function有什么要求。 由于2.4.21 Apache引入了处理HTTP / 2后端的mod_proxy_http2 ,但我会说这更less使用和testing(仍标记为实验)。 它也没有那么有用:HTTP / 2的主要优势在于高延迟networking(即客户端到前端),而不是低延迟的前端到后端连接。 所以现在我在Apache上有HTTP / 2,但保留到HTTP / 1的任何后端基础设施的反向代理连接。 如果这就是你所要求的, 这个问题是绝对正确的,尽pipe对这个问题的回答声称HTTP / 2一直都是有益的 。