如何在centos7上启用http2

时间:2016-11-21 12:53:35

标签: linux apache centos7 http2

我有CENTOS7服务器,用:

  

服务器版本: Apache / 2.4.6 (CentOS)

。 如何在这些Apache上启用/添加HTTP / 2? 我试图通过Nghttp从客户端发送http2请求,但由于不支持Http2的服务器,我在响应(recv RST_STREAM帧)中收到错误。

  

我看到我必须在apache中启用module_http2,但我没有   发现我可以做到这一点。

先谢谢。

2 个答案:

答案 0 :(得分:8)

仅在Apache 2.4.18中添加了HTTP / 2支持,这在标准的CentOS / Red Hat存储库中不可用。虽然作为mod_http2(并且仍处于编写时)正在积极开展工作,但您应该使用最新版本(编写本文时为2.4.33 - 尽管还有更多mod_http2补丁可用)。

此外,HTTP / 2需要OpenSSL 1.0.2或更高版本,这意味着您需要CentOS / RHEL 7.4或更高版本,除非您想要安装自己的OpenSSL版本以及您自己的Apache版本。请注意,如果您想要更进一步,请转到OpenSSL 1.1.0。

因此,您需要从源代码下载并编译更高版本的Apache(可能还有OpenSSL),或者找到这些更高版本的另一个repo。这确实存在一些风险 - 主要是因为您丢失了repo版本提供的简单安全补丁。 CentOS Apache 2.4.6实际上包含了更新版本的所有最新安全补丁(假设您经常运行“yum update”来更新它) - 但不是像HTTP / 2那样的功能更改(因此它们为什么将版本号保留为2.4.6)

如果您对从源代码安装感兴趣,那么我将在此处逐步介绍如何执行此操作:https://www.tunetheweb.com/performance/http2/

答案 1 :(得分:0)

您可以通过the httpd24 Software Collection安装较新版本的httpd,而不是基本存储库中包含的版本。启用S​​CL后,您需要以下软件包:

  • httpd24
  • httpd24-nghttp2
  • httpd24-mod_ssl *

*最好也配置SSL,因为例如Chrome只会使用TLS执行HTTP2。