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 build option.

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, disponible desde la versión 1.1.1 de OpenSSL.

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 número;

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 número;

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 se habilita el proxy con caché.

http3_stream_buffer_size#

Sintaxis

http3_stream_buffer_size tamaño;

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 número;

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 offload de segmentación.

Nota

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

quic_host_key#

Sintaxis

quic_host_key archivo;

Predeterminado

Contexto

http, server

Establece un archivo 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