Icono del sitio Blog personal de Guido Cutipa

Habilitar HTTP/2 en un Servidor Apache

HTTP/2

HTTP/2 es una versión actualizada del protocolo HTTP, el cual es utilizado para transmitir datos en la World Wide Web. HTTP/1.1 es la versión anterior de HTTP.

HTTP/2 tiene varias mejoras en comparación con HTTP/1.1, incluyendo:

  1. Mayor eficiencia: HTTP/2 permite la transmisión de múltiples solicitudes y respuestas de manera simultánea a través de una única conexión TCP. Esto significa que es más rápido que HTTP/1.1, ya que evita la sobrecarga del sistema que resulta de la apertura y cierre de múltiples conexiones TCP.
  2. Encabezados comprimidos: HTTP/2 utiliza una técnica de compresión llamada HPACK para comprimir los encabezados de las solicitudes y respuestas. Esto reduce el tamaño de los datos transmitidos, lo que a su vez reduce el tiempo de transmisión y aumenta la eficiencia.
  3. Servidor push: HTTP/2 permite que el servidor envíe datos al cliente sin esperar a que el cliente lo solicite. Esto puede ser útil en situaciones donde el servidor sabe que el cliente necesitará ciertos datos en el futuro, como imágenes o archivos CSS.

HTTP/2 es una versión más rápida y eficiente de HTTP que mejora la experiencia del usuario al reducir el tiempo de carga de las páginas web.

Habilitar SSL en Apache

antes de habilitar HTTP/2 será necesario habilitar SSL en Apache, en los siguientes enlaces se encuentran los pasos necesarios para configurar un certificado autofirmado y un certificado generado con Let´s Encrypt:

a2enmod ssl

Habilitar HTTP/2

a2enmod http2

Modificar en el archivo de configuración de Apache:

nano /etc/apache2/apache2.conf

Adicionar las siguientes líneas para aplicarlo a todos los subdominios

Protocols h2 h2c http/1.1
SSLStrictSNIVHostCheck off

Hay tres parámetros en la directiva Protocols mencionada anteriormente:

Si se desea que otros archivos (css, js, imagenes) también utilicen el protocolo HTTP/2, tendremos que adicionar en el archivo de configuración (/etc/apache2/apache2.conf) las siguientes líneas:

H2Push on
H2PushPriority * after
H2PushPriority text/css before
H2PushPriority image/jpeg after 32
H2PushPriority image/png after 32
H2PushPriority image/svg+xml after 16
H2PushPriority font/woff2 after 16
H2PushPriority application/javascript interleaved

Probar la configuración

Primero verificamos los archivos de configuración de Apache:

apache2ctl configtest


# Syntax OK

Si no existen problemas entonces se debe reiniciar el servidor Apache para ver la implementación del protocolo:

systemctl restart apache2

Finalmente revisamos las respuestas obtenidas en el navegador web:

Salir de la versión móvil