如何在CentOS 7上启用HTTP2

14

我有一个CENTOS7服务器,其上安装了:

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

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

我看到我需要在apache中启用module_http2模块,但我不知道如何操作。

提前致谢。


你需要从源代码构建它,并添加以下标志 --enable-http2 - Hackerman
我有同样的问题,有什么解决方案吗? - Alireza Kavian
2个回答

14

Apache 2.4.18及以上版本才支持HTTP/2,但这些版本在标准的CentOS/Red Hat仓库中不可用。虽然mod_http2正在积极开发中(撰写本文时仍是如此),但你应该选择最新版本(目前为2.4.33,但还有更多的mod_http2补丁可用)。

此外,HTTP/2需要OpenSSL 1.0.2或更高版本,这意味着除非你想安装自己的OpenSSL版本和Apache版本,否则你需要CentOS/RHEL 7.4或更高版本。请注意,如果你想使用OpenSSL 1.1.0,你需要Apache 2.4.26或更高版本。

因此,你需要从源代码下载并编译更新的Apache(可能还要编译OpenSSL),或者找到另一个含有这些更新版本的软件仓库。这样做会带来一些风险,主要是失去了易于获得的安全补丁。CentOS Apache 2.4.6实际上包括所有后续版本的最新安全补丁(假设你定期运行“yum update”以进行更新),但不包括像HTTP/2这样的功能变化(因此它们将版本号保留在2.4.6)。

如果你有兴趣从源代码安装,请参考我的这篇博客文章,其中提供了详细的步骤:https://www.tunetheweb.com/performance/http2/


0

你可以通过httpd24软件集合安装比基础仓库中包含的更新版本的httpd。一旦启用了SCL,您需要以下软件包:

  • httpd24
  • httpd24-nghttp2
  • httpd24-mod_ssl *

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


你如何启用该模块?我已安装包但无法启用它们... 无法将modules/mod_http2.so加载到服务器中:libnghttp2-httpd24.so.14:无法打开共享对象文件:没有这样的文件或目录 - JuliSmz
2
我认为这个答案是不正确的。在Centos/RHEL 7中,httpd24-nghttp2并不包括Apache模块,只有nghttp2库。 - Andrew Schulman

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接