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

时间:2017-11-07 09:53:45

标签: apache ssl https http2

我已经阅读了很多关于http2的文档,启用似乎是安全的。但我需要100%确定我不会有任何回归,或者至少可以发生回归。

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

1 个答案:

答案 0 :(得分:3)

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

然而,我对此感兴趣,并且不要花一点时间尽可能地回答。

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

  • 首先,您需要将Apache升级到支持HTTP / 2的版本。理想情况下,您应该升级到最新版本(编写本文时为2.4.29),因为HTTP / 2代码已经发生了很多变化,因为这是第一次在2.4.17中启动并且停止标记为"实验"在2.4.26。这有多容易取决于您的环境,但打包版本(例如通过RHEL和Centos上的yum)通常不是最新版本,超出了打包环境的安全性,从源代码构建或第三方代码库不是一个轻率的步骤。另请参阅this question以获取有关是否应使用mod_http2的更多信息(在我看来是的)。

  • 您需要考虑您来自哪个版本的Apache以及您需要对升级进行哪些更改(如果有)。许多人仍在使用2.2和upgrade to 2.4 requires some changes。如果已经在2.4的早期版本上,那么这应该不是问题,但仍有一些可能会影响您的更改。 2.2虽然是生命的终结,但这是你迟早需要做的事情。

  • HTTP / 2要求HTTPS可以在所有浏览器中运行,因此如果您的站点尚未使用,那么这可能会有点升级。然而,网络正在转向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 Test Tool是您查看此内容的最佳选择。

  • 你使用websockets吗? They are currently not compatible with HTTP/2因此,如果使用它们,您需要保持HTTP / 1.1。目前有计划将WebSockets添加到HTTP / 2,但它们仍处于讨论阶段。

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

  • HTTP / 2响应仍然发送响应代码(200,404)但省略状态文本(" OK"," Not Found")。同样,这不应该影响大多数正确编码的应用程序,但如果您依赖此响应消息,那么您可能需要做一些工作来解决这个问题。

  • HTTP / 2旨在使用单个连接。如果您当前对不同域的资产进行了分片,那么它可能会尝试coalesce them back into one connection,这应该无缝运行,但如果HTTP / 2在所有分片域中都不可用,则会导致一些问题。

最后3点来自优秀的BBC write up of the issues they experienced when moving to HTTP/2

以上是关于如何升级以允许启用HTTP / 2的所有要点。在大多数标准Linux发行版上说实话,现在有点痛苦,但随着新版本的普及,希望会变得更容易。

但是,一旦你有了这个,可以升级到HTTP / 2,你需要决定你是否要升级

总体而言,HTTP / 2设计为向后兼容,因此应该是无缝升级。那些能够谈论HTTP / 2的客户,那些不能继续谈论HTTP / 1.1(你应该在可预见的未来配置)的客户。

然而,HTTP / 2在技术领域仍然相对较新,客户端或服务器端可能存在实施问题。说它现在已经用了两年了,我对它的体验是非常积极的,并没有看到很多问题,但是,与任何升级一样,你应该在升级之前测试,测试,测试并在之后进行监控。我所看到的大多数问题都是模糊不清的问题,其中HTTP / 2并不像它应该的那样高效,而不是显示停止问题,而且大多数人没有像我一样深刻的兴趣,会很难注意他们。 20% of web traffic is using HTTP/2因此它是一种经过验证的技术,它基于SPDY,已被许多站点,服务器和客户端使用,在过去的几年中没有出现重大问题。

您还应该考虑HTTP / 2的好处。在我看来,大多数网站应该看到良好的速度提升(可能是20%),但这不能保证,将取决于个人网站和访问者和使用的连接。某些带宽绑定站点甚至可能会看到速度减慢。但是,您需要设置切合实际的期望并了解您的性能瓶颈所在,这将有助于了解HTTP / 2是否有用(以及有多少)。对于效果不佳的网站而言,这不是一个神奇的解决方案。

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

  • 您是否针对HTTP / 2优化,如果是,何时?这会影响仍在HTTP / 1.1上的访问者吗?有关详细信息,请参阅this answer
  • 您是否将HTTP / 2用于任何后端服务器或在Web服务器上终止HTTP / 2(就像许多用于HTTPS的那样)并对任何后端应用程序服务器说HTTP / 1.1?这需要使用仍然标记为实验性的mod_proxy_http2,并且主要mod_http2模块的使用和使用量较少。除非你有充分的理由使用它,否则我现在建议不要这样做。如果不进行上述类似的升级,许多后端应用程序服务器也将不支持HTTP / 2。
  • 您是否使用HTTP / 2推送等新功能?这仍然是一种新兴技术needs careful thought,最好在缓存摘要标准化之前保留。

在一天结束时,除了你之外,没有人能够100%确定"您将不会遇到任何问题,由您来测试这一点以给自己带来信心。显然,您对HTTP / 2的信息和理解越多,您就越能准备好了解影响和任何问题。