
Artículos Guías Manuales Sistemas Linux Windows Redes MySql Binario 0 Binario Cero
HTTP/3 (HTTP sobre QUIC) usa QUIC sobre UDP para mejorar la latencia de establecimiento de conexión y ofrecer 0-RTT. Nginx incluye soporte experimental para HTTP/3 a partir de la rama 1.25.x, pero el módulo no se construye por defecto: hay que compilar nginx con soporte para HTTP/3 (o instalar un paquete ya compilado que lo incluya) y usar una biblioteca TLS compatible (OpenSSL 3.5.1+, BoringSSL, o alternativas compatibles).
Requisitos previos
- Versión de nginx: Nginx ≥ 1.25 (módulo
ngx_http_v3_module
). - Biblioteca TLS: OpenSSL moderno, BoringSSL o LibreSSL/QuicTLS.
- Certificados TLS válidos (Let's Encrypt o comercial).
- Puertos: abrir UDP/443 además de TCP/443 en el firewall o proveedor de nube.
- Compilación: si no usas paquetes precompilados, necesitarás compilar nginx.
Opciones de instalación
- Opción A — Instalar un paquete ya compilado: algunas distribuciones ofrecen builds con HTTP/3. Comprueba la versión y que
--with-http_v3_module
esté presente. - Opción B — Compilar nginx desde fuente:
- Descargar nginx ≥ 1.25.
- Obtener y compilar una biblioteca TLS compatible.
- Configurar con
./configure --with-http_v3_module
y enlazar la librería TLS. - Ejecutar
make && make install
.
Ejemplo de configuración (nginx.conf — extracto)
En el bloque server { ... }
de tu configuración HTTPS:
server {
http2 on;
http3 on;
listen 443 ssl;
listen [::]:443 ssl;
listen 443 quic reuseport;
listen [::]:443 quic reuseport;
server_name ejemplo.com;
ssl_certificate /etc/ssl/certs/ejemplo.fullchain.pem;
ssl_certificate_key /etc/ssl/private/ejemplo.privkey.pem;
ssl_protocols TLSv1.2 TLSv1.3;
quic_retry on;
ssl_early_data on;
add_header Alt-Svc 'h3=":443"; ma=86400' always;
add_header QUIC 'h3' always;
location / {
root /var/www/html;
index index.html;
}
}
Puntos clave:
listen 443 quic reuseport;
habilita QUIC/HTTP3 en UDP.Alt-Svc
anuncia a los navegadores que el servidor soporta HTTP/3.- TLS debe ser 1.3.
Recomendaciones de TLS y 0-RTT
- HTTP/3 requiere TLS 1.3.
ssl_early_data on;
habilita 0-RTT, pero conlleva riesgo de replays. Actívalo solo si tu aplicación lo tolera.
Firewall y red
- Abre UDP 443 además de TCP 443.
- Si usas balanceadores, asegúrate de que enruten tráfico UDP al backend.
Pruebas y verificación
- Navegador: en las DevTools, revisa la columna Protocol para ver si usa
h3
. - curl (con soporte HTTP/3):
curl --http3 -I https://ejemplo.com
- Herramientas online: existen testers HTTP/3 que validan la conexión y protocolo negociado.
Resolución de problemas
- No hay conexiones QUIC: revisa que UDP/443 esté abierto, nginx tenga
--with-http_v3_module
y que TLS sea 1.3. - Errores al compilar: asegúrate de que tu librería TLS es compatible y que las rutas a
./configure
son correctas. - Problemas con múltiples dominios/SNI: revisa la organización de
listen
yreuseport
para cada bloqueserver
.
Consideraciones operativas
- HTTP/3 puede mejorar la latencia, pero no siempre garantiza mayor rendimiento. Evalúalo en tus cargas reales.
- Monitoriza métricas de QUIC y TLS para detectar anomalías.
- Mantén actualizadas las librerías TLS y nginx por seguridad.