Habilitar HTTP/2 en un Servidor Apache

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:

  • h2 – instruyendo a Apache a soportar el protocolo HTTP/2 sobre SSL/TLS
  • h2c – instruyendo a Apache a soportar HTTP/2 sobre TCP
  • http/1.1 – si un cliente no acepta HTTP/2, entonces sirve la solicitud sobre HTTP/1.1

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:


Discover more from Blog personal de Guido Cutipa

Subscribe to get the latest posts sent to your email.

Discover more from Blog personal de Guido Cutipa

Subscribe now to keep reading and get access to the full archive.

Continue reading