gzip_http_version 1.1; 在 Nginx 中,使用 HTTP/2 时

9 server nginx https

在旨在使用 HTTP/2 的站点的 Nginx 服务器块中,我看到了这个:

gzip_http_version 1.1;
Run Code Online (Sandbox Code Playgroud)

这会与 HTTP/2 中发送的某些数据包产生冲突吗?

我不理解这个 Gzip 指令,因此我不能说 HTTP/2 数据包是否会受到它的影响。

hee*_*ayl 11

gzip_http_version是压缩来自服务器的响应所需的请求(来自客户端)的 HTTP 协议的最低版本。它默认为.1.1

因此,任何使用协议版本 1.0 发送请求的用户代理都不会从服务器获得压缩的响应;响应将按原样进行。请注意,将值设置为 1.1 可能会伤害非常非常小的人群(可能是使用 Win XP 的人,BTW 现在不支持),如果有的话。

回答你的问题:

这会与 HTTP/2 中发送的某些数据包产生冲突吗?

不,因为nginx会根据$server_protocol变量的值(HTTP/1.0, HTTP/1.1, 之一HTTP/2.0)以不同方式处理请求。


附带说明一下,由于Transfer-Encoding不支持标题,因此HTTP/1.0您不应将其设置gzip_http_version1.0. 否则,您将不会获得 keepalive,因为Content-Lengthgzip_http_version使用时未设置标头;HTTP/1.1 使用Transfer-Encoding: chunked标头解决了这个问题。