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.
El soporte para 0-RTT requiere OpenSSL 3.5.1 o superior. Alternativamente, se puede usar BoringSSL, LibreSSL o QuicTLS para compilar y ejecutar este módulo.
Antes de la versión 1.29.1, el soporte para 0-RTT no podía habilitarse con OpenSSL independientemente del valor de la directiva ssl_early_data.
Para solicitudes HTTP/3, si no se pasa la cabecera Host, la variable $http_host se inicializa desde la pseudo-cabecera :authority.
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#
Habilita la negociación del protocolo HTTP/3.
http3_hq#
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#
| |
Predeterminado |
|
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#
| |
Predeterminado |
|
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#
| |
Predeterminado |
|
http, server |
Establece el tamaño del búfer utilizado para leer y escribir en los flujos QUIC.
quic_active_connection_id_limit#
| |
Predeterminado |
|
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#
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#
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#
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#
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:
| para conexiones HTTP/3 |
| para conexiones hq |
| una cadena vacía en otros casos |
$quic_connection#
número de serie de la conexión QUIC