Desde la creación de la World Wide Web (www), el protocolo HTTP ha evolucionado a lo largo de los años para ofrecer contenido digital seguro y rápido a través de Internet.
La versión más utilizada es HTTP 1.1 y, aunque incluye mejoras de características y optimizaciones de rendimiento para abordar las deficiencias de versiones anteriores, carece de algunas características destacadas que han sido abordadas por HTTP/2.
¿Cuáles son las Limitaciones de HTTP/1.1?
El protocolo HTTP/1.1 está plagado de las siguientes deficiencias que lo hacen menos ideal, especialmente cuando se ejecutan servidores web con mucho tráfico:
- Retrasos en la carga de páginas web debido a encabezados HTTP largos.
- HTTP/1.1 solo puede enviar una solicitud por archivo por conexión TCP.
- Dado que HTTP/1.1 procesa una solicitud por cada conexión TCP, los navegadores se ven obligados a enviar una gran cantidad de conexiones TCP paralelas para procesar simultáneamente las solicitudes. Esto lleva a la congestión TCP y, en última instancia, al desperdicio de ancho de banda y la degradación de la red.
Los problemas mencionados anteriormente a menudo condujeron a la degradación del rendimiento y altos costos generales en el uso del ancho de banda. HTTP/2 entró en escena para abordar estos problemas y ahora es el futuro de los protocolos HTTP.
Ventajas de Usar HTTP/2
Ofrece las siguientes ventajas:
- Compresión de encabezados que minimiza las solicitudes del cliente y, por lo tanto, reduce el consumo de ancho de banda. El efecto resultante es una carga rápida de páginas.
- Multiplexando varias solicitudes sobre una conexión TCP. Tanto el servidor como el cliente pueden dividir una solicitud HTTP en varios marcos y volver a agruparlos en el otro extremo.
- Mejora el rendimiento web, lo que conduce a una mejor clasificación en SEO.
- Mejora la seguridad, ya que la mayoría de los navegadores principales cargan HTTP/2 sobre HTTPS.
- HTTP/2 se considera más amigable para dispositivos móviles gracias a la función de compresión de encabezados.
Dicho esto, vamos a habilitar HTTP/2 en Apache en Ubuntu 20.04 LTS y Ubuntu 18.04 LTS.
Prerrequisitos:
Antes de comenzar, asegúrate de habilitar HTTPS en el servidor web Apache antes de habilitar HTTP/2. Esto se debe a que todos los navegadores web principales admiten HTTP/2 sobre HTTPS. Tengo un nombre de dominio apuntando a una instancia en Ubuntu 20.04 que está ejecutando el servidor Apache asegurado usando un certificado Let’s Encrypt.
También se recomienda tener Apache 2.4.26 y versiones posteriores para servidores de producción que pretendan hacer un cambio a HTTP/2.
Para verificar la versión de Apache que estás ejecutando, ejecuta el comando:
$ apache2 -v

Desde la salida, se puede ver que estamos utilizando la última versión, que es Apache 2.4.41 en el momento de escribir este artículo.
Habilitar HTTP/2 en un Virtual Host de Apache
Para empezar, primero confirme que el servidor web está ejecutando HTTP/1.1. Puede hacer esto en un navegador abriendo la sección de herramientas para desarrolladores en Google Chrome usando la combinación Ctrl +SHIFT + I
. Haga clic en la pestaña ‘Red’ y localice la columna ‘Protocolo’.

A continuación, habilite el módulo HTTP/2 en Ubuntu ejecutando el siguiente comando.
$ sudo a2enmod http2

A continuación, localice y edite su archivo de host virtual SSL, si ha habilitado HTTPS usando Let’s Encrypt, se crea un nuevo archivo con un sufijo le-ssl.conf.
$ sudo vim /etc/apache2/sites-enabled/your-domain-name-le-ssl.conf
Inserte la directiva a continuación después de la etiqueta <VirtualHost *:443>
.
Protocols h2 http/1.1

Para guardar los cambios, reinicie el servidor web de Apache.
$ sudo systemctl restart apache2
Para comprobar si HTTP/2 está habilitado, obtenga los encabezados HTTP utilizando el siguiente comando curl como se muestra.
$ curl -I --http2 -s https://domain.com/ | grep HTTP

Debería obtener la salida mostrada.
HTTP/2 200
En el navegador, recargue su sitio. Luego regrese a las herramientas para desarrolladores y confirme HTTP/2 indicado por la etiqueta h2
en la columna ‘Protocolo’.

Al usar el módulo mod_php con Apache
Si estás ejecutando Apache junto con el módulo mod_php, necesitas cambiar a PHP-FPM. Esto se debe a que el módulo mod_php utiliza el módulo prefork MPM que no es compatible con HTTP/2. Necesitas desinstalar el módulo prefork MPM y cambiar al módulo mpm_event que será compatible con HTTP/2.
Si estás utilizando el módulo PHP 7.4 mod_php, por ejemplo, desactívalo como se muestra:
$ sudo a2dismod php7.4

Luego, desactiva el módulo prefork MPM.
$ sudo a2dismod mpm_prefork

Después de desactivar los módulos, a continuación, habilita los módulos Event MPM, Fast_CGI y setenvif como se muestra.
$ sudo a2enmod mpm_event proxy_fcgi setenvif

Instala PHP-FPM en Ubuntu
A continuación, instala y inicia PHP-FPM como se muestra.
$ sudo apt install php7.4-fpm $ sudo systemctl start php7.4-fpm
Luego habilita PHP-FPM para que se inicie en el arranque.
$ sudo systemctl enable php7.4-fpm
A continuación, habilita PHP-FPM como manejador de PHP de Apache y reinicia el servidor web Apache para que los cambios surtan efecto.
$ sudo a2enconf php7.4-fpm
Habilita el Soporte para HTTP/2 en Apache Ubuntu
Luego habilita el módulo HTTP/2 como antes.
$ sudo a2enmod http2
Reinicia Apache para sincronizar todos los cambios.
$ sudo systemctl restart apache2
Finalmente, puedes probar si tu servidor está utilizando el protocolo HTTP/2 utilizando el comando curl como se muestra.
$ curl -I --http2 -s https://domain.com/ | grep HTTP

También puedes optar por utilizar las herramientas para desarrolladores en el navegador Google Chrome para verificar, como se documentó anteriormente. Hemos llegado al final de esta guía. Esperamos que hayas encontrado la información valiosa y que puedas habilitar HTTP/2 en Apache cómodamente.
Source:
https://www.tecmint.com/enable-http2-in-apache-on-ubuntu/