ngx_http_v2_module モジュール
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
"に設定される場合、ciphers がRFC 7540, Appendix Aブラックリストに準拠し、クライアントによってサポートされなければならないことにも注意してください。
ディレクティブ
構文: |
http2_body_preread_size |
---|---|
デフォルト: |
http2_body_preread_size 64k; |
コンテキスト: |
http , server |
このディレクティブはバージョン 1.11.0 から導入されました。
リクエストが処理される前に各リクエストのボディを保存することができるバッファのsize
を設定します。
構文: |
http2_chunk_size |
---|---|
デフォルト: |
http2_chunk_size 8k; |
コンテキスト: |
http , server , location |
応答ボディが sliceされるチャンクの最大サイズを設定します。あまりに小さい値だと高負荷になります。あまりに大きい値だとHOL blockingにより優先順位が損なわれます。
構文: |
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から導入されました。
接続内の同時起こる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-圧縮リクエストヘッダーフィールドの最大サイズを制限します。制限は名前と値の両方に一様に適用されます。ハフマン符号化が適用された場合、解凍された名前と値の文字列の実際のサイズはもっと大きいかも知れません。ほとんどのリクエストにおいて、デフォルトの制限で十分に違いないでしょう。
構文: |
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から導入されました。
Pre-emptively は指定されたuri
に元のリクエストの応答と一緒にリクエストを送信(pushes) します。絶対パスを持つ相対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から導入されました。
“Link”応答ヘッダ フィールド内で指定されたpreload linksからpush リクエストへの自動変換を有効にします。
構文: |
http2_recv_buffer_size |
---|---|
デフォルト: |
http2_recv_buffer_size 256k; |
コンテキスト: |
http |
worker あたりの入力バッファのサイズを設定します。
構文: |
http2_recv_timeout |
---|---|
デフォルト: |
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
"、そうでなければ空文字列。