繁体   English   中英

是什么可以阻止我用apache激活http2?

[英]What could prevent me to activate http2 with apache?

我已经阅读了很多有关http2的文档,并且启用它似乎很安全。 但是我需要100%确保不会进行任何回归,或者至少要知道会发生什么回归。

是什么导致我无法在生产apache服务器上启用http2? 我必须仔细检查哪些配置? 什么新行为可能会给我带来麻烦?

这是一个非常基于意见的问题,而不是Stack Overflow的一种很好的格式,旨在提供基于事实的答案。 这也完全取决于您所提供的细节很少的环境。

但是,我对此感兴趣,并且不介意花一点时间尽可能地回答。

这些是您应该考虑的事情:

  • 首先,您需要将Apache升级到支持HTTP / 2的版本。 理想情况下,您应该升级到最新版本(在撰写本文时为2.4.29),因为HTTP / 2代码自2.4.17首次启动以来,已经在其中进行了许多更改,并且在该版本中不再标记为“实验性”。 2.4.26。 这有多容易,取决于您的环境,但是打包版本(例如,通过RHEL和Centos上的yum )通常不是最新版本,并且超出打包环境的安全性,从源代码构建或第三方存储库都不是一个步骤。掉以轻心。 另请参阅此问题 ,以获取有关是否应使用mod_http2的更多信息(我认为是)。

  • 您需要考虑您来自哪个版本的Apache,以及升级时需要进行哪些更改(如果有)。 许多人仍在使用2.2,并且升级到2.4需要进行一些更改 如果已经在2.4的较早版本上,那么这应该不是问题,但仍有一些更改可能会影响您。 虽然2.2是生命的尽头,所以这是您迟早需要做的事情。

  • HTTP / 2要求HTTPS可以在所有浏览器上运行,因此,如果您的站点尚未安装在HTTPS上,则可能会有点升级。 但是,Web再次迁移到HTTPS,因此,如果还没有这样做,那么您迟早会需要执行此操作。

  • HTTP / 2要求OpenSSL 1.0.2或更高版本具有ALPN支持才能协商HTTP / 2。 同样,许多Linux发行版都不包含此版本,即使那些具有此发行版的发行版(例如RHEL / Centos 7.4)也不会针对此版本构建Apache。 所以再次,您可能需要查看从源代码构建或其他回购(请参见上面的要点)。

  • HTTP / 2需要良好的HTTPS配置(例如GCM密码),这要归功于OpenSSL 1.0.2,但可能需要检查您的SSL / TLS配置以进行配置。 SSLLabs Server测试工具是查看此内容的最佳选择。

  • 您是否使用websockets? 它们当前与HTTP / 2不兼容,因此如果使用它们,则需要保持HTTP / 1.1不变。 当前有计划将WebSockets添加到HTTP / 2,但它们仍处于讨论阶段。

  • 您应该知道,HTTP / 2强制使用小写的HTTP标头名称。 传统上,HTTP标头名称始终不区分大小写,但是并非每个实现都正确实现了该实现,并且某些依赖于区分大小写。

  • HTTP / 2响应仍然发送响应代码(200、404),但是省略状态文本(“确定”,“未找到”)。 同样,这不会影响大多数正确编码的应用程序,但是如果您依赖此响应消息,则可能需要做一些工作来解决此问题。

  • HTTP / 2旨在用于单个连接。 如果您当前分片不同域的资产,则它可能会尝试将它们合并回一个连接 ,该连接应该可以无缝运行,但是如果HTTP / 2在所有分片域上均不可用,则会导致一些问题。

最后三点来自BBC出色的文章,描述了他们在转移到HTTP / 2时遇到的问题

以上是有关如何升级以启用HTTP / 2的所有要点。 坦率地说,在大多数标准Linux发行版上,这现在有点痛苦,但随着新版本的普及,希望它将变得更加容易。

但是,一旦安装到位并可以升级到HTTP / 2,则需要确定是否要升级

总体上,HTTP / 2被设计为向后兼容,因此应该进行无缝升​​级。 可以使用HTTP / 2的客户端,不能使用HTTP / 2的客户端(可以在可预见的将来配置)。

但是,HTTP / 2在技术领域仍然相对较新,并且客户端或服务器端可能存在实现问题。 说它已经使用两年了,我的经验是非常积极的,没有看到很多问题,但是与任何升级一样,您应该在升级之前进行测试,测试,测试,然后进行监控。 我见过的大多数问题都是晦涩的问题,其中HTTP / 2的性能不如应有的表现,而不是显示停止的问题,例如,大多数没有我兴趣的人都很难注意到它们。 20%的Web流量使用HTTP / 2,因此它是一种可靠的技术,并且很大程度上基于SPDY,在过去的几年中,SPDY已被许多站点,服务器和客户端使用,而没有出现重大问题。

您还应该考虑HTTP / 2的好处。 在我看来,大多数网站都应该看到良好的速度改进(可能达到20%),但这并不能保证,这将取决于单个站点以及访问者的连接和使用情况。 某些带宽绑定的站点甚至可能会变慢。 但是,您需要设定切合实际的期望,并了解性能瓶颈在哪里,然后这将有助于了解HTTP / 2是否(以及在多少程度上)会有所帮助。 对于性能不佳的网站,这不是一个神奇的解决方案。

升级后要考虑的其他几点:

  • 您是否针对HTTP / 2进行了优化(如果需要)? 这会影响那些仍使用HTTP / 1.1的访问者吗? 有关更多详细信息,请参见此答案
  • 您是对任何后端服务器使用HTTP / 2还是在Web服务器上终止HTTP / 2(就像许多HTTPS一样),并对任何后端应用程序服务器使用HTTP / 1.1? 这要求使用mod_proxy_http2 ,该模块仍被标记为实验性的,并且与主要mod_http2模块相比,具有较少的使用量和过多的位置。 我现在不建议这样做,除非您有充分的理由使用它。 如果不进行上述升级,许多后端应用程序服务器也将不支持HTTP / 2。
  • 您是否使用HTTP / 2 push等新功能? 这仍然是一项新兴技术, 需要仔细考虑 ,最好不要对缓存摘要进行标准化。

归根结底,没有人,但是您可以“ 100%确保”您不会遇到任何问题,您需要进行测试以增强自信。 显然,您对HTTP / 2的了解和了解越多,您就越会做好充分的准备来理解影响和任何问题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM