centos7如何开启http2

Posted

技术标签:

【中文标题】centos7如何开启http2【英文标题】:how to enable http2 on centos7 【发布时间】:2017-04-04 21:06:33 【问题描述】:

我有 CENTOS7 服务器,带有:

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

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

我看到我必须在 apache 中启用 module_http2,但我没有 觉得很热,我可以这样做吗?

提前致谢。

【问题讨论】:

您需要从源代码构建它并添加以下标志--enable-http2 我也有同样的问题,请问有解决办法吗? 【参考方案1】:

HTTP/2 支持仅在 Apache 2.4.18 中添加,而标准 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 2.4.26 或更高版本。

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

如果您有兴趣从源代码安装,那么我在这里有一篇关于如何执行此操作的分步博客文章:https://www.tunetheweb.com/performance/http2/

【讨论】:

【参考方案2】:

您可以通过the httpd24 Software Collection 安装比基本存储库中包含的更新版本的 httpd。启用 SCL 后,您需要以下软件包:

httpd24 httpd24-nghttp2 httpd24-mod_ssl *

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

【讨论】:

如何启用该模块?我安装了数据包但无法启用它们...Cannot load modules/mod_http2.so into server: libnghttp2-httpd24.so.14: cannot open shared object file: No such file or directory 我认为这个答案是不正确的。在 Centos/RHEL 7 中,httpd24-nghttp2 不包含 Apache 模块,只包含 nghttp2 库。

以上是关于centos7如何开启http2的主要内容,如果未能解决你的问题,请参考以下文章

关于Centos7和Centos6中新分区如何开启acl功能

centos7怎么开启3306端口

CentOS7 sshd开启远程登陆

centos7 配置yum更新后,开启停在kernel offset:disabled

Linux 中如何开启端口?

centos7 防火墙 开启端口 并测试