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功能