有没有办法在 Apache HTTP Server 中实现 HTTP/3 (QUIC)?

Is there any way to implement HTTP/3 (QUIC) in Apache HTTP Server?

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

编辑:

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

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

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

目前没有办法。 Apache 目前尚未承诺执行此处所需的工作。

LiteSpeed is an Apache alternative supporting many of the same features, but with strong QUIC and HTTP/3 support.

Nginx 也只对 QUIC 和 HTTP/3 发表了模糊的评论,但 Cloudflare have made an Nginx patch available that adds QUIC and HTTP/3 support. (Edit Nginx have since previewed HTTP/3 support 独立于 Cloudflare 的实现构建)。

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

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

注意:用 quiche 编译 NGINX,只有在你想测试时才使用这个解决方案 HTTP/3,因为它不是很可靠。

我得到的一个解决方案是,您可以 运行 NGINX 使用 HTTP/3 仅在 443 上仅使用 QUIC,因此它将使用 UDP。

并且,您可以在将使用 TCP 的 443 上使用 Apache。

因此,您可以让 Apache 发送 Alt-Svc header,并使其处理 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
  • HTTP/2.0 使用 TLS
  • HTTP/2.0 没有 TLS,使用 Upgrade: h2c header 升级到它
  • HTTP/2.0 没有 TLS,在 Apache 中使用 H2Direct 来启用 http2-prior-knowledge(不确定它实际叫什么)。
  • HTTP/3.0

常见问题解答

  • 嗯,你为什么要这样做?相反,只需使用 NGINX!
    如果你需要apache提供的一些特性,比如HTTP/2明文(http升级:header或者直接),如果你不需要这些特性,你可以坚持使用 NGINX。
    或者如果您只想使用 Apache 来处理所有主要内容。

问题

  • 我注意到 nginx 在部署当前配置时在服务 POST 请求方面存在一些问题。