15

有什么方法可以在 Apache 中实现 HTTP/3?

编辑:

QUIC 协议现已成为 RFC,请参阅RFC 9000等待 HTTP/3...

OpenSSL 在某处表示,他们将在发布 OpenSSL 3.0 后开始研究 QUIC。不确定 OpenSSL 3.0 何时发布。

在那之前,也许我们可以将 BoringSSL 集成到 Apache 中,并开始使用 QUIC 进行测试。

4

2 回答 2

25

不,目前没有办法。Apache 目前还没有承诺做这里需要的工作。

LiteSpeed 是 Apache 的替代品,支持许多相同的功能,但具有强大的 QUIC 和 HTTP/3 支持

Nginx 也只对 QUIC 和 HTTP/3 发表了含糊的评论,但Cloudflare 提供了一个 Nginx 补丁,增加了对 QUIC 和 HTTP/3 的支持。(编辑Nginx 已经预览了独立于 Cloudflare 实现构建的 HTTP/3 支持)。

或者, Caddy是另一个支持 QUIC 和 HTTP/3 的替代服务器。

但是,如果我希望启用,甚至只是尝试使用 QUIC 和 HTTP/3,我会考虑使用 CDN,因为它们将是启用此功能并确保您拥有最佳设置的最简单方法。Cloudflare 有一个免费计划,(我认为)还包括 HTTP/3 和 QUIC 支持,因此很容易在您拥有的站点前设置。

于 2020-02-20T16:58:03.347 回答
0

注意:使用 quiche 编译 NGINX,仅在要测试 HTTP/3 时使用此解决方案,因为它不是很可靠。

我得到的一个解决方案是,你可以只在 443 上使用 HTTP/3 运行 NGINX,只有 QUIC,所以它将使用 UDP。

而且,您可以在 443 上使用 Apache,它将使用 TCP。

因此,您可以让 Apache 发送 Alt-Svc 标头,并使其处理 HTTP/0.9、HTTP/1.0、HTTP/1.1 和 HTTP/2.0。

而且,您可以使用以下方法使 NGINX 成为 Apache 的包装器:

listen 1.2.3.4:443 quic reuseport;
location / {
     proxy_pass https://your-apache-server.tld:443;
}

这只是让你允许运行:

  • HTTP/0.9
  • HTTP/1.0
  • HTTP/1.1
  • 带有 TLS 的 HTTP/2.0
  • 没有 TLS 的 HTTP/2.0,使用Upgrade: h2c标头升级到它
  • 没有 TLS 的 HTTP/2.0,H2Direct在 Apache 中使用以启用 http2-prior-knowledge(不确定它的实际名称)。
  • HTTP/3.0

常问问题

  • 好吧,你为什么要这样做?相反,只需使用 NGINX!
    如果您需要 apache 提供的一些功能,例如HTTP/2 明文(http 升级:标头或直接),如果您不需要这些功能,则可以坚持使用 NGINX。
    或者,如果您只想将 Apache 用于所有主要内容。

问题

  • 我注意到在部署当前配置时,nginx 在服务 POST 请求方面存在一些问题。
于 2021-06-14T13:49:14.373 回答