ngx_http_v2_module モジュール

知られていること
設定例
ディレクティブ
     http2_body_preread_size
     http2_chunk_size
     http2_idle_timeout
     http2_max_concurrent_pushes
     http2_max_concurrent_streams
     http2_max_field_size
     http2_max_header_size
     http2_max_requests
     http2_push
     http2_push_preload
     http2_recv_buffer_size
     http2_recv_timeout
組み込み変数

ngx_http_v2_module モジュール (1.9.5) はHTTP/2 のサポートを提供し、 ngx_http_spdy_moduleモジュールに取って代わります。

このモジュールはデフォルトではビルドされず、--with-http_v2_module configureパラメータを有効にする必要があります。

知られていること

バージョン1.9.14より前では、クライアントのリクエストボディのバッファリングは proxy_request_buffering, fastcgi_request_buffering, uwsgi_request_buffering およびscgi_request_buffering ディレクティブの値に関係なく、無効にすることができませんでした。

バージョン1.19.1より前は、lingering_closeメカニズムはHTTP/2接続のクローズを制御するために使われていませんでした。

設定例

server {
    listen 443 ssl http2;

    ssl_certificate server.crt;
    ssl_certificate_key server.key;
}

TLS上のHTTP/2接続の受信には、OpenSSLバージョン1.0.2からのみ利用可能な"Application-Layer Protocol Negotiation" (ALPN) TLS 拡張サポートが必要なことに注意してください。

ssl_prefer_server_ciphers ディレクティブが値"on"に設定される場合、ciphersRFC 7540, Appendix Aブラックリストに準拠し、クライアントによってサポートされなければならないことにも注意してください。

ディレクティブ

構文: http2_body_preread_size size;
デフォルト:
http2_body_preread_size 64k;
コンテキスト: http, server

このディレクティブはバージョン 1.11.0 から導入されました。

リクエストが処理される前に各リクエストのボディを保存することができるバッファのsizeを設定します。

構文: http2_chunk_size size;
デフォルト:
http2_chunk_size 8k;
コンテキスト: http, server, location

応答ボディが sliceされるチャンクの最大サイズを設定します。あまりに小さい値だと高負荷になります。あまりに大きい値だとHOL blockingにより優先順位が損なわれます。

構文: http2_idle_timeout time;
デフォルト:
http2_idle_timeout 3m;
コンテキスト: http, server

このディレクティブはバージョン1.19.7から廃止されました。代わりにkeepalive_timeout ディレクティブが使われるべきです。

接続が閉じられた後で動作しなくなるタイムアウトを設定します。

構文: http2_max_concurrent_pushes number;
デフォルト:
http2_max_concurrent_pushes 10;
コンテキスト: http, server

このディレクティブはバージョン 1.13.9から導入されました。

接続内の同時起こるpush リクエストの最大数を制限します。

構文: http2_max_concurrent_streams number;
デフォルト:
http2_max_concurrent_streams 128;
コンテキスト: http, server

接続内で同時に起こるHTTP/2ストリームの最大数を設定します。

構文: http2_max_field_size size;
デフォルト:
http2_max_field_size 4k;
コンテキスト: http, server

このディレクティブはバージョン1.19.7から廃止されました。代わりにlarge_client_header_buffers ディレクティブが使われるべきです。

HPACK-圧縮リクエストヘッダーフィールドの最大サイズを制限します。制限は名前と値の両方に一様に適用されます。ハフマン符号化が適用された場合、解凍された名前と値の文字列の実際のサイズはもっと大きいかも知れません。ほとんどのリクエストにおいて、デフォルトの制限で十分に違いないでしょう。

構文: http2_max_header_size size;
デフォルト:
http2_max_header_size 16k;
コンテキスト: http, server

このディレクティブはバージョン1.19.7から廃止されました。代わりにlarge_client_header_buffers ディレクティブが使われるべきです。

HPACK 解凍の後の全体のリクエストヘッダリストの最大サイズを制限します。ほとんどのリクエストにおいて、デフォルトの制限で十分に違いないでしょう。

構文: http2_max_requests number;
デフォルト:
http2_max_requests 1000;
コンテキスト: http, server

このディレクティブはバージョン 1.11.6 から導入されました。

このディレクティブはバージョン1.19.7から廃止されました。代わりにkeepalive_requests ディレクティブが使われるべきです。

1つのHTTP/2接続によって提供することができるリクエスト(push リクエストを含む)の最大数を設定します。この後は次のクライアントのリクエストは閉じられ、新しい接続を確立する必要があるでしょう。

接続ごとのメモリの割り当てを解放するには、接続を定期的に閉じる必要があります。したがって、リクエストの最大数が多すぎると、メモリが過剰に使われることになり、お勧めしません。

構文: http2_push uri | off;
デフォルト:
http2_push off;
コンテキスト: http, server, location

このディレクティブはバージョン 1.13.9から導入されました。

Pre-emptively は指定されたuriに元のリクエストの応答と一緒にリクエストを送信(pushes) します。絶対パスを持つ相対URIのみが処理されるでしょう。例えば:

http2_push /static/css/main.css;

uri の値には変数を含むことができます。

幾つかの http2_push ディレクティブは同じ設定レベルで指定することができます。off パラメータは、前の設定レベルから継承したhttp2_pushディレクティブの影響を無効にします。

構文: http2_push_preload on | off;
デフォルト:
http2_push_preload off;
コンテキスト: http, server, location

このディレクティブはバージョン 1.13.9から導入されました。

“Link”応答ヘッダ フィールド内で指定されたpreload linksからpush リクエストへの自動変換を有効にします。

構文: http2_recv_buffer_size size;
デフォルト:
http2_recv_buffer_size 256k;
コンテキスト: http

worker あたりの入力バッファのサイズを設定します。

構文: http2_recv_timeout time;
デフォルト:
http2_recv_timeout 30s;
コンテキスト: http, server

このディレクティブはバージョン1.19.7から廃止されました。代わりにclient_header_timeout ディレクティブが使われるべきです。

接続が閉じた後でクライアントからデータがもう来ないと思われるタイムアウトを設定します。

埋め込み変数

ngx_http_v2_moduleは以下の埋め込み変数をサポートします。

$http2
交渉プロトコル識別子: HTTP/2 over TLS については "h2"、平文TCP上のHTTP/2については "h2c"、そうでなければ空文字列。

TOP
inserted by FC2 system