モジュール ngx_http_v2_module
ngx_http_v2_module
モジュール (1.9.5) は、HTTP/2 をサポートしています。
このモジュールはデフォルトではビルドされません。--with-http_v2_module
設定パラメータを使用して有効にする必要があります。
既知の問題
バージョン 1.9.14 より前では、proxy_request_buffering、fastcgi_request_buffering、uwsgi_request_buffering、および scgi_request_buffering ディレクティブの値に関係なく、クライアントリクエストボディのバッファリングを無効にすることができませんでした。
バージョン 1.19.1 より前では、HTTP/2 接続のクローズ制御に lingering_close メカニズムが使用されていませんでした。
設定例
server { listen 443 ssl; http2 on; ssl_certificate server.crt; ssl_certificate_key server.key; }
TLS 経由で HTTP/2 接続を受け入れるには、「Application-Layer Protocol Negotiation」(ALPN) TLS 拡張機能のサポートが必要です。これは OpenSSL バージョン 1.0.2 以降で利用可能です。
ssl_prefer_server_ciphers ディレクティブが「on
」に設定されている場合、ciphers は RFC 9113、Appendix A のブラックリストに準拠し、クライアントでサポートされているように構成する必要があります。
ディレクティブ
構文 |
http2 |
---|---|
デフォルト |
http2 off; |
コンテキスト |
http 、server |
このディレクティブはバージョン 1.25.1 で追加されました。
HTTP/2 プロトコルを有効にします。
構文 |
http2_body_preread_size |
---|---|
デフォルト |
http2_body_preread_size 64k; |
コンテキスト |
http 、server |
このディレクティブはバージョン 1.11.0 で追加されました。
リクエストボディが処理を開始する前に保存できる、各リクエストのバッファのサイズ
を設定します。
構文 |
http2_chunk_size |
---|---|
デフォルト |
http2_chunk_size 8k; |
コンテキスト |
http 、server 、location |
レスポンスボディを分割するチャンクの最大サイズを設定します。値が小さすぎるとオーバーヘッドが高くなり、大きすぎるとHOLブロッキングにより優先順位付けが阻害されます。
構文 |
http2_idle_timeout |
---|---|
デフォルト |
http2_idle_timeout 3m; |
コンテキスト |
http 、server |
バージョン 1.19.7 以降、このディレクティブは非推奨です。keepalive_timeout ディレクティブを使用してください。
非アクティブタイムアウトを設定します。この時間経過後に接続が閉じられます。
構文 |
http2_max_concurrent_pushes |
---|---|
デフォルト |
http2_max_concurrent_pushes 10; |
コンテキスト |
http 、server |
このディレクティブはバージョン 1.13.9 で追加されました。
バージョン 1.25.1 以降、このディレクティブは非推奨です。
接続内の同時pushリクエストの最大数を制限します。
構文 |
http2_max_concurrent_streams |
---|---|
デフォルト |
http2_max_concurrent_streams 128; |
コンテキスト |
http 、server |
接続内の同時HTTP/2ストリームの最大数を設定します。
構文 |
http2_max_field_size |
---|---|
デフォルト |
http2_max_field_size 4k; |
コンテキスト |
http 、server |
バージョン 1.19.7 以降、このディレクティブは非推奨です。large_client_header_buffers ディレクティブを使用してください。
HPACK圧縮されたリクエストヘッダフィールドの最大サイズを制限します。この制限は名前と値の両方に適用されます。Huffmanエンコーディングが適用されている場合、解凍された名前と値の文字列の実際のサイズの方が大きくなる可能性があることに注意してください。ほとんどのリクエストでは、デフォルトの制限で十分です。
構文 |
http2_max_header_size |
---|---|
デフォルト |
http2_max_header_size 16k; |
コンテキスト |
http 、server |
バージョン 1.19.7 以降、このディレクティブは非推奨です。large_client_header_buffers ディレクティブを使用してください。
HPACK解凍後のリクエストヘッダーリスト全体の最大サイズを制限します。ほとんどのリクエストでは、デフォルトの制限で十分です。
構文 |
http2_max_requests |
---|---|
デフォルト |
http2_max_requests 1000; |
コンテキスト |
http 、server |
このディレクティブはバージョン 1.11.6 で追加されました。
バージョン 1.19.7 以降、このディレクティブは非推奨です。keepalive_requests ディレクティブを使用してください。
1つのHTTP/2接続を通じて処理できるリクエスト(pushリクエストを含む)の最大数を設定します。この数を超えると、次のクライアントリクエストにより接続が閉じられ、新しい接続を確立する必要があります。
接続を定期的に閉じることで、接続ごとのメモリ割り当てを解放する必要があります。したがって、リクエストの最大数を非常に大きくすると、過剰なメモリ使用につながる可能性があり、推奨されません。
構文 |
http2_push |
---|---|
デフォルト |
http2_push off; |
コンテキスト |
http 、server 、location |
このディレクティブはバージョン 1.13.9 で追加されました。
バージョン 1.25.1 以降、このディレクティブは非推奨です。
指定されたuri
へのリクエストを、元のリクエストへのレスポンスとともに先行して送信します(push)。絶対パスを持つ相対URIのみが処理されます。例:
http2_push /static/css/main.css;
uri
の値には変数を含めることができます。
同じ設定レベルで複数のhttp2_push
ディレクティブを指定できます。off
パラメータは、前の設定レベルから継承されたhttp2_push
ディレクティブの効果を無効にします。
構文 |
http2_push_preload |
---|---|
デフォルト |
http2_push_preload off; |
コンテキスト |
http 、server 、location |
このディレクティブはバージョン 1.13.9 で追加されました。
バージョン 1.25.1 以降、このディレクティブは非推奨です。
「Link」レスポンスヘッダーフィールドに指定されたpreloadリンクをpushリクエストに自動的に変換する機能を有効にします。
構文 |
http2_recv_buffer_size |
---|---|
デフォルト |
http2_recv_buffer_size 256k; |
コンテキスト |
http |
ワーカーごとの入力バッファのサイズを設定します。
構文 |
http2_recv_timeout |
---|---|
デフォルト |
http2_recv_timeout 30s; |
コンテキスト |
http 、server |
バージョン 1.19.7 以降、このディレクティブは非推奨です。client_header_timeout ディレクティブを使用してください。
クライアントからのデータの受信待機タイムアウトを設定します。この時間経過後に接続が閉じられます。
埋め込み変数
ngx_http_v2_module
モジュールは、次の埋め込み変数をサポートしています。
$http2
- ネゴシエートされたプロトコル識別子:TLS 上の HTTP/2 の場合は「
h2
」、クリアテキスト TCP 上の HTTP/2 の場合は「h2c
」、それ以外の場合は空文字列。