QUICとHTTP/3のサポート

ソースからのビルド
構成
構成の例
トラブルシューティング

1.25.0以降でQUICおよびHTTP/3プロトコルのサポートが利用できるようになりました。また、1.25.0以降、QUICとHTTP/3のサポートはLinuxのバイナリパッケージで利用できます。

QUICおよびHTTP/3のサポートは実験段階であり、利用者注意が必要です。

ソースからのビルド

ビルドはconfigureコマンドを使用して構成します。詳細については、ソースからのnginxのビルドを参照してください。

nginxの構成時に、--with-http_v3_module構成パラメータを使用してQUICとHTTP/3を有効にすることができます。

BoringSSLLibreSSLQuicTLSなどのQUICをサポートするSSLライブラリを使用してnginxをビルドすることをお勧めします。そうしないと、OpenSSL互換レイヤーが使用され、初期データがサポートされなくなります。

次のコマンドを使用してBoringSSLを使用してnginxを構成します。

./configure
    --with-debug
    --with-http_v3_module
    --with-cc-opt="-I../boringssl/include"
    --with-ld-opt="-L../boringssl/build/ssl
                   -L../boringssl/build/crypto"

または、QuicTLSを使用してnginxを構成できます。

./configure
    --with-debug
    --with-http_v3_module
    --with-cc-opt="-I../quictls/build/include"
    --with-ld-opt="-L../quictls/build/lib"

または、最新バージョンのLibreSSLを使用してnginxを構成できます。

./configure
    --with-debug
    --with-http_v3_module
    --with-cc-opt="-I../libressl/build/include"
    --with-ld-opt="-L../libressl/build/lib"

構成後、nginxはmakeを使用してコンパイルおよびインストールされます。

構成

ngx_http_core_moduleモジュールのlistenディレクティブに、指定されたポートでHTTP/3 over QUICを有効にする新しいパラメータquicが追加されました。

quicパラメータだけでなく、reuseportパラメータを指定して、複数のワーカーで適切に機能させることもできます。

ディレクティブのリストについては、ngx_http_v3_moduleを参照してください。

アドレス検証を有効にする

quic_retry on;

0-RTTを有効にする

ssl_early_data on;

GSO(Generic Segmentation Offloading)を有効にする

quic_gso on;

さまざまなトークンのホストキーを設定する

quic_host_key <filename>;

QUICには、ssl_protocolsディレクティブでデフォルトで有効になっているTLSv1.3プロトコルバージョンが必要です。

デフォルトでは、GSOのLinux固有の最適化は無効になっています。対応するネットワークインターフェイスがGSOをサポートするように構成されている場合は、有効にしてください。

構成の例

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 quic and https
        listen 8443 quic reuseport;
        listen 8443 ssl;

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

        location / {
            # required for browsers to direct them to quic port
            add_header Alt-Svc 'h3=":8443"; ma=86400';
        }
    }
}

トラブルシューティング

問題の特定に役立つヒント