HTTP/2 es la segunda gran versión del protocolo HTTP lanzada en 2015.

http-protocol-history

Alrededor del 46,5% de los sitios web son compatibles con HTTP/2.

HTTP2 statistics

Tiene muchas características como:

  • Compresión de cabeceras HTTP
  • Tecnologías push
  • Carga de elementos de página en paralelo a través de una única conexión TCP
  • Protocolo binario
  • Latencia reducida

Una demostración de AKAMAI muestra que HTTP/2 es aproximadamente dos veces más rápido que HTTP/1.1.

http2-demo

¿Sabía que LiteSpeed fue uno de los primeros servidores web en soportar HTTP/2?

Si utiliza una CDN como Cloudflare, Incapsula, MaxCDN, puede que no necesite habilitar HTTP/2 en sus servidores web ya que puede hacerlo desde el borde de la red CDN.

Sin embargo, si necesita implementar HTTP/2 en sus servidores web como Apache, Nginx, IIS, siga leyendo para saber cómo puede hacerlo.

Nota: Todos los navegadores principales (Chrome, Edge, Firefox, Safari, Opera) deben utilizar TLS 1.2 o más reciente para la implementación de HTTP2.

Pero no se preocupe si está haciendo algunos experimentos. Puede obtener el certificado TLS GRATIS.

Implementar HTTP/2 en Apache HTTP

HTTP/2 puede implementarse en Apache HTTP 2.4.17 o una versión posterior con la ayuda del módulo mod_http2. Así que si tiene una versión 2.2 o inferior, primero tiene que actualizarse a la versión compatible.

Vamos a compilar Apache HTTP con el módulo mod_http2, mod_ssl.

  • Descargue la última versión (yo haré la 2.4.25 en Linux)
  • Extraiga el archivo descargado, si descargó el archivo .gz, entonces
gunzip -c httpd-2.4.25.tar.gz | tar xvf -
  • Verá que se crea una nueva carpeta. Vaya dentro de eso
  • Construya el Apache desde el código fuente con el comando configure

Nota: si está intentando esto en un servidor nuevo, puede encontrarse con un error para instalar dependencias, y esta guía debería ayudarle con eso.

./configure --enable-ssl --enable-so --enable-http2
  • Asegúrese de que no se produce ningún error desde el comando anterior una vez hecho esto, ejecute el siguiente comando make
make
make install

Esto concluye que Apache HTTP está instalado con el módulo HTTP/2 y es hora de hacer la configuración necesaria.

  • Haga una copia de seguridad del archivo httpd.conf (ubicación por defecto /etc/httpd/conf/httpd.conf)
  • Abra el archivo httpd.conf con vi y asegúrese de que existe lo siguiente; si no es así, añádalo.
LoadModule http2_module modules/mod_http2.so
  • A continuación, debe añadir la directiva Protocols como se indica a continuación
Protocolos h2 h2c http/1.1

Si está habilitando HTTP/2 para un host virtual individual, necesita añadir Protocols bajo el VIrtualHost respectivo.

Nota: hay tres parámetros en la directiva Protocols anterior

  • h2 – para indicar a Apache que soporte el protocolo HTTP/2 sobre SSL/TLS
  • h2c – indica a Apache que soporte HTTP/2 sobre TCP
  • http/1.1 – si un cliente no acepta HTTP/2 entonces sirve la petición sobre HTTP/1.1

Reinicie el servidor HTTP Apache para recargar la configuración.

Ahora, la instancia HTTP de Apache está habilitada para soportar el protocolo HTTP/2.

Implementar HTTP/2 en Nginx

Nginx 1.9.5 o una versión superior soporta HTTP/2, por lo que primero debe asegurarse de que tiene instalada la versión compatible.

Habilitar HTTP/2 en Nginx es sólo cuestión de añadir el parámetro http2 en la directiva listen.

  • Como de costumbre, haga una copia de seguridad del archivo nginx.conf (ubicación por defecto /etc/nginx/nginx.conf)
  • Modifíquelo utilizando vi y añada http2 en la directiva listen
servidor {
        listen 443 http2 ssl chandan.io;
        .......
}

Como he mencionado anteriormente, HTTP/2 sólo es compatible con HTTPS, por lo que tiene que añadir bajo bloque de servidor que tiene la configuración SSL.

Si su configuración SSL está en otro archivo nginx.conf, debe actualizarla allí.

Una vez hecho esto, reinicie el Nginx para que la configuración se active.

Verifique si el sitio web es compatible con HTTP/2

Hay varias formas de comprobar si el sitio web admite HTTP/2 o no.

Manualmente – abra IE/Chrome/Firefox y pulse F12 >> vaya a la pestaña Red, y debería ver Protocolo como HTTP/2.

chrome-http2-verify

En línea – puede utilizar la herramienta de prueba HTTP/2.

Eso es todo por hoy. Espero que lo anterior le ayude a habilitar el protocolo HTTP/2 en los servidores web Apache y Nginx para cargar rápidamente las páginas web.