Artículos Guías Manuales Sistemas Linux Windows Redes MySql Binario 0 Binario Cero
Artículos Guías Manuales Sistemas Linux Windows Redes MySql Binario 0 Binario Cero

Cómo Habilitar HTTP/3 en Nginx

Loading

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

  1. Versión de nginx: Nginx ≥ 1.25 (módulo ngx_http_v3_module).
  2. Biblioteca TLS: OpenSSL moderno, BoringSSL o LibreSSL/QuicTLS.
  3. Certificados TLS válidos (Let's Encrypt o comercial).
  4. Puertos: abrir UDP/443 además de TCP/443 en el firewall o proveedor de nube.
  5. 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:
    1. Descargar nginx ≥ 1.25.
    2. Obtener y compilar una biblioteca TLS compatible.
    3. Configurar con ./configure --with-http_v3_module y enlazar la librería TLS.
    4. 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

  1. Navegador: en las DevTools, revisa la columna Protocol para ver si usa h3.
  2. curl (con soporte HTTP/3): curl --http3 -I https://ejemplo.com
  3. 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 y reuseport para cada bloque server.

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.

You may also like...