モジュール ngx_http_v3_module

既知の問題
設定例
ディレクティブ
     http3
     http3_hq
     http3_max_concurrent_streams
     http3_stream_buffer_size
     quic_active_connection_id_limit
     quic_bpf
     quic_gso
     quic_host_key
     quic_retry
埋め込み変数

ngx_http_v3_moduleモジュール (1.25.0) は、HTTP/3 の実験的なサポートを提供します。

このモジュールはデフォルトではビルドされません。--with-http_v3_module 設定パラメータを使用して有効にする必要があります。

このモジュールのビルドと実行には、BoringSSLLibreSSL、またはQuicTLSなどのQUICサポートを提供するSSLライブラリが推奨されます。そうでない場合、OpenSSLライブラリを使用すると、早期データをサポートしないOpenSSL互換レイヤーが使用されます。

既知の問題

このモジュールは実験的なものであり、自己責任でご使用ください。

設定例

http {
    log_format quic '$remote_addr - $remote_user [$time_local] '
                    '"$request" $status $body_bytes_sent '
                    '"$http_referer" "$http_user_agent" "$http3"';

    access_log logs/access.log quic;

    server {
        # for better compatibility it's recommended
        # to use the same port for http/3 and https
        listen 8443 quic reuseport;
        listen 8443 ssl;

        ssl_certificate     certs/example.com.crt;
        ssl_certificate_key certs/example.com.key;

        location / {
            # used to advertise the availability of HTTP/3
            add_header Alt-Svc 'h3=":8443"; ma=86400';
        }
    }
}

TLS経由でHTTP/3接続を受け入れるには、TLSv1.3プロトコルサポートが必要です。これはOpenSSLバージョン1.1.1以降で使用可能です。

ディレクティブ

構文 http3 on | off;
デフォルト
http3 on;
コンテキスト httpserver

HTTP/3プロトコルのネゴシエーションを有効にします。

構文 http3_hq on | off;
デフォルト
http3_hq off;
コンテキスト httpserver

QUIC相互運用性テストで使用されるHTTP/0.9プロトコルのネゴシエーションを有効にします。

構文 http3_max_concurrent_streams 数値;
デフォルト
http3_max_concurrent_streams 128;
コンテキスト httpserver

接続内の同時HTTP/3リクエストストリームの最大数を設定します。

構文 http3_stream_buffer_size サイズ;
デフォルト
http3_stream_buffer_size 64k;
コンテキスト httpserver

QUICストリームの読み書きに使用されるバッファのサイズを設定します。

構文 quic_active_connection_id_limit 数値;
デフォルト
quic_active_connection_id_limit 2;
コンテキスト httpserver

QUICのactive_connection_id_limitトランスポートパラメータ値を設定します。これは、サーバーに保存できるクライアント接続IDの最大数です。

構文 quic_bpf on | off;
デフォルト
quic_bpf off;
コンテキスト メイン

eBPF を使用したQUICパケットのルーティングを有効にします。有効にすると、QUIC接続の移行をサポートできます。

このディレクティブは、Linux 5.7以降でのみサポートされています。

構文 quic_gso on | off;
デフォルト
quic_gso off;
コンテキスト httpserver

セグメンテーションオフロードを使用して最適化されたバッチモードでの送信を有効にします。

最適化された送信は、UDP_SEGMENTを備えたLinuxでのみサポートされています。

構文 quic_host_key ファイル;
デフォルト
コンテキスト httpserver

ステートレスリセットとアドレス検証トークンの暗号化に使用される秘密鍵を含むファイルを設定します。デフォルトでは、リロードごとにランダムなキーが生成されます。古いキーで生成されたトークンは受け入れられません。

構文 quic_retry on | off;
デフォルト
quic_retry off;
コンテキスト httpserver

QUICアドレス検証機能を有効にします。これには、RetryパケットまたはNEW_TOKENフレームに新しいトークンを送信し、Initialパケットで受信したトークンを検証することが含まれます。

埋め込み変数

ngx_http_v3_moduleモジュールは、次の埋め込み変数をサポートしています。

$http3
ネゴシエートされたプロトコル識別子:HTTP/3接続の場合は「h3」、hq接続の場合は「hq」、それ以外の場合は空文字列。