apache / 2.4 / reference / mod-mod_proxy_http2.html

Apache 模块 mod_proxy_http2

Description: mod_proxy的 HTTP/2 支持模块
Status: Extension
Module Identifier: proxy_http2_module
Source File: mod_proxy_http2.c
Compatibility: 在 httpd 2.4.19 及更高版本中可用

Summary

mod_proxy_http2仅支持 HTTP/2,它提供对 HTTP/1.1 的任何降级。这意味着后端需要支持 HTTP/2,因为将不使用 HTTP/1.1.

这个模块需要 mod_proxy的服务,因此为了获得处理 HTTP/2 代理请求的能力,服务器必须同时加载mod_proxymod_proxy_http2

mod_proxy_http2使用 HTTP/1.1 或 HTTP/2 处理传入的前端请求。在这两种情况下,都尽可能通过单个 TCP 连接发送代理到同一后端的请求(即何时可以重新使用该连接)。

注意:不会尝试将多个 HTTP/1.1 前端请求(配置为代理到同一后端)合并为属于同一 HTTP/2 请求的 HTTP/2 流。每个 HTTP/1.1 前端请求都将使用单独的 HTTP/2 请求被代理到后端(如果可能,请尝试重用同一 TCP 连接)。

此模块依靠libnghttp2提供核心的 http/2 引擎。

Warning

该模块是实验性的。相对于其他标准模块,版本之间的行为,指令和默认值可能会有更多更改。鼓励用户查阅“ CHANGES”文件以获取可能的更新。

Warning

在拥有保护您的服务器之前,不要启用代理。开放式代理服务器对您的网络和整个 Internet 都是危险的。

Basic Examples

下面的示例演示如何为反向代理的后端连接配置 HTTP/2.

HTTP/2 (TLS)

ProxyPass "/app" "h2://app.example.com"
ProxyPassReverse "/app" "https://app.example.com"

HTTP/2 (cleartext)

ProxyPass "/app" "h2c://app.example.com"
ProxyPassReverse "/app" "http://app.example.com"

Note

上面在ProxyPassReverse中为反向代理h2(或h2c)协议配置的方案是用户代理预期/使用的常规https(分别为http)。

Request notes

mod_proxy_http使用LogFormatErrorLogFormat%{VARNAME}n格式创建以下记录请求日志:

  • proxy-source-port

    • 用于连接到后端服务器的本地端口。
  • proxy-status

    • 从后端服务器收到的 HTTP/2 状态。