我有一个CENTOS7服务器,其上安装了:
服务器版本: Apache/2.4.6 (CentOS)
如何在这些Apache上启用/添加HTTP/2? 我试图通过Nghttp从客户端发送http2请求,但由于不支持Http2的服务器而收到响应中的错误(recv RST_STREAM frame)。
我看到我需要在apache中启用module_http2模块,但我不知道如何操作。
提前致谢。
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/
你可以通过httpd24软件集合安装比基础仓库中包含的更新版本的httpd。一旦启用了SCL,您需要以下软件包:
*最好也配置SSL,因为例如Chrome只会使用TLS进行HTTP2。
无法将modules/mod_http2.so加载到服务器中:libnghttp2-httpd24.so.14:无法打开共享对象文件:没有这样的文件或目录
- JuliSmz
--enable-http2
。 - Hackerman