HTTP/3#

Proporciona soporte para el protocolo HTTP/3 para conexiones de cliente, así como para conexiones con servidores proxy configurados usando las siguientes directivas del módulo Proxy:

Al compilar desde el código fuente, este módulo no se compila por defecto; debe habilitarse con la opción de compilación ‑‑with‑http_v3_module.

En paquetes e imágenes de nuestros repositorios, el módulo está incluido en la compilación.

Ejemplo de configuración#

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 {
        # para una mejor compatibilidad se recomienda
        # usar el mismo puerto para http/3 y https
        listen 8443 quic reuseport;
        listen 8443 ssl;

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

        location / {
            # usado para anunciar la disponibilidad de HTTP/3
            add_header Alt-Svc 'h3=":8443"; ma=86400';
        }
    }
}

Nota

Tenga en cuenta que aceptar conexiones HTTP/3 sobre TLS requiere soporte para el protocolo TLSv1.3, que está disponible desde la versión 1.1.1 de OpenSSL.

Además, la opción reuseport solo puede especificarse en una de las directivas listen ... quic en un servidor. Todas las demás directivas listen ... quic deben especificarse sin ella.

Directivas#

http3#

Sintaxis

http3 on | off;

Predeterminado

http3 on;

Contexto

http, server

Habilita la negociación del protocolo HTTP/3.

http3_hq#

Sintaxis

http3_hq on | off;

Predeterminado

http3_hq off;

Contexto

http, server

Habilita la negociación del protocolo HTTP/0.9 utilizado en pruebas de interoperabilidad QUIC.

Advertencia

Habilite este modo solo para ejecutar pruebas especializadas que lo requieran explícitamente.

http3_max_concurrent_streams#

Sintaxis

http3_max_concurrent_streams number;

Predeterminado

http3_max_concurrent_streams 128;

Contexto

http, server

Inicializa la configuración de HTTP/3 y QUIC y establece el número máximo de flujos de solicitudes HTTP/3 concurrentes en una conexión.

http3_max_table_capacity#

Sintaxis

http3_max_table_capacity number;

Predeterminado

http3_max_table_capacity 4096;

Contexto

http, server

Establece la capacidad de la tabla dinámica para conexiones de servidor.

Nota

Una directiva similar proxy_http3_max_table_capacity hace esto para conexiones proxy. Para evitar errores, el uso de tablas dinámicas está deshabilitado cuando el proxy con caché está habilitado.

http3_stream_buffer_size#

Sintaxis

http3_stream_buffer_size size;

Predeterminado

http3_stream_buffer_size 64k;

Contexto

http, server

Establece el tamaño del búfer utilizado para leer y escribir en los flujos QUIC.

quic_active_connection_id_limit#

Sintaxis

quic_active_connection_id_limit number;

Predeterminado

quic_active_connection_id_limit 2;

Contexto

http, server

Establece el valor del parámetro de transporte QUIC active_connection_id_limit. Este es el número máximo de IDs de conexión que pueden almacenarse en el servidor.

quic_bpf#

Sintaxis

quic_bpf on | off;

Predeterminado

quic_bpf off;

Contexto

main

Habilita el enrutamiento de paquetes QUIC usando eBPF. Cuando está habilitado, esto permite soportar la migración de conexiones QUIC.

Nota

La directiva solo es compatible con Linux 5.7+.

quic_gso#

Sintaxis

quic_gso on | off;

Predeterminado

quic_gso off;

Contexto

http, server

Habilita el envío en modo por lotes optimizado mediante descarga de segmentación.

Nota

El envío optimizado solo es compatible en Linux con soporte para UDP_SEGMENT.

quic_host_key#

Sintaxis

quic_host_key file;

Predeterminado

Contexto

http, server

Establece un file con la clave secreta utilizada para cifrar tokens de restablecimiento sin estado y validación de direcciones. Por defecto, se genera una clave aleatoria en cada recarga. Los tokens generados con claves antiguas no son aceptados.

quic_retry#

Sintaxis

quic_retry on | off;

Predeterminado

quic_retry off;

Contexto

http, server

Habilita la función de validación de direcciones QUIC. Esto incluye enviar un nuevo token en un paquete Retry o un marco NEW_TOKEN y validar un token recibido en el paquete Initial.

Variables integradas#

El módulo http_v3 admite las siguientes variables integradas:

$http3#

identificador de protocolo negociado:

h3

para conexiones HTTP/3

hq

para conexiones hq

""

una cadena vacía en otros casos

$quic_connection#

número de serie de la conexión QUIC