在一个旨在使用 HTTP/2 的站点的 Nginx 服务器块中,我看到了这种情况:
gzip_http_version 1.1;
这会与 HTTP/2 中发送的一些数据包产生冲突吗?
我不了解这个 Gzip 指令,因此我无法说 HTTP/2 数据包是否会受到它的影响。
答案1
gzip_http_version
是个最低限度HTTP 协议的版本要求(来自客户端)需要压缩来自服务器的响应。默认为1.1
。
因此,任何使用协议版本 1.0 发送请求的用户代理都不会从服务器获得压缩的响应;响应将按原样发送。请注意,将值设置为 1.1 可能会损害极小一部分人群(可能是使用 Win XP 的人,顺便说一下,现在不支持该操作系统),如果有的话。
回答你的问题:
这会与 HTTP/2 中发送的一些数据包产生冲突吗?
不是,因为nginx
会根据变量的值( 、、$server_protocol
之一)以不同的方式处理请求。HTTP/1.0
HTTP/1.1
HTTP/2.0
附注:由于Transfer-Encoding
不支持标头,因此HTTP/1.0
不应将其设置gzip_http_version
为。否则,在使用时,由于未设置标头,1.0
您将无法获得 keepalives ;HTTP/1.1 使用标头来解决这个问题。Content-Length
gzip_http_version
Transfer-Encoding: chunked