web-dev-qa-db-ja.com

gzip_http_version 1.1; Nginxでは、HTTP / 2を使用する場合

HTTP/2で動作することを目的としたサイトのNginxサーバーブロックで、私はこれを見ました:

gzip_http_version 1.1;

これにより、HTTP/2で送信された一部のパケットと競合する可能性がありますか?

私はこのGzipディレクティブを理解していないため、HTTP/2パケットが影響を受ける可能性があるとは言えません。

5
JohnDoea

gzip_http_version は、request(クライアントから)に必要なHTTPプロトコルのminimumバージョンですサーバーからの応答を圧縮します。デフォルトは1.1です。

そのため、プロトコルバージョン1.0を使用してリクエストを送信しているユーザーエージェントは、サーバーから応答を圧縮しません。応答はそのままになります。値を1.1に設定すると、非常に小さな群衆(おそらく、現在サポートされていないWin XPを使用している人)がいたとしても、おそらく傷つくことに注意してください。

質問に答えるには:

これにより、HTTP/2で送信された一部のパケットと競合する可能性がありますか?

いいえ、nginx$server_protocol変数(HTTP/1.0HTTP/1.1HTTP/2.0のいずれか)の値に基づいてリクエストを異なる方法で処理するためです。


補足説明として、Transfer-EncodingヘッダーはHTTP/1.0ではサポートされていないため、gzip_http_version1.0に設定しないでください。そうしないと、Content-Lengthが使用されたときにgzip_http_versionヘッダーが設定されないため、キープアライブが取得されません。 HTTP/1.1は、Transfer-Encoding: chunkedヘッダーを使用してこれに対処します。

7
heemayl