HTTP/1.1 abría un puñado de conexiones y enviaba una petición cada vez por cada una, así que cada archivo de más costaba un puesto en la cola. HTTP/2 las manda todas de golpe por una sola conexión, y ese único cambio deja varias optimizaciones antiguas sin sentido o directamente dañinas.

Actívalo

listen 443 ssl;
http2 on;

Exige TLS en todos los navegadores, así que viene con el certificado que ya tienes. No hace falta cambiar nada más.

Lo que deja de ser cierto

Juntar todos los scripts en un archivo, y los sprites CSS, existían para reducir el NÚMERO de peticiones. Bajo HTTP/2 ese número no cuesta casi nada, y un paquete grande significa que cambiar una línea invalida el conjunto para todos los visitantes.
  • Entrega varios archivos pequeños que se cacheen por separado.
  • No repartas entre dominios: era una forma de conseguir más conexiones en paralelo y ahora cuesta un saludo de más por cada uno.
  • Incrusta solo lo que el primer pintado necesite de verdad.

HTTP/3

listen 443 quic reuseport;
add_header Alt-Svc 'h3=":443"; ma=86400';

HTTP/3 va sobre UDP. Su ganancia real está en las redes poco fiables —sobre todo las móviles—, donde un paquete perdido ya no atasca todo lo demás de la conexión.

Comprueba cuál estás sirviendo

curl -sI --http2 https://yourdomain.com | head -1
curl -sI --http3 https://yourdomain.com | head -1
Ninguno hace rápida una página lenta. Si el TTFB es de 900 ms, el protocolo no es el problema, y pasarse a HTTP/3 no cambiará nada que puedas notar.