Cómo habilitar HTTP/2 en Apache en Ubuntu

Cómo habilitar HTTP/2 en Apache en Ubuntu

Desde el inicio del World Wide Web (www), el Http El protocolo 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 si bien se incluye con mejoras de características y optimizaciones de rendimiento para abordar las deficiencias de las versiones anteriores, no tiene algunas otras características sobresalientes que han sido abordadas por el Http/2.

¿Cuáles son las limitaciones de HTTP/1?.1?

El Http/1.1 El protocolo está lleno de las siguientes deficiencias que lo hacen menos ideal, especialmente cuando se ejecuta servidores web de alto tráfico:

  1. Retrasos en la carga de páginas web debido a los largos encabezados HTTP.
  2. Http/1.1 solo puede enviar una solicitud para cada archivo por conexión TCP.
  3. Dado que http/1.1 procesa una solicitud para cada conexión TCP, los navegadores se ven obligados a enviar un diluvio de conexiones TCP paralelas para procesar simultáneamente las solicitudes. Esto conduce a la congestión TCP y, en última instancia, el 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 de ancho de banda. Http/2 entró en la imagen para abordar estos problemas y ahora es el futuro para los protocolos HTTP.

Ventajas de usar HTTP/2

Ofrece las siguientes ventajas:

  1. Compresión de encabezado que minimiza las solicitudes de los clientes y, por lo tanto, reduce el consumo de ancho de banda. El efecto resultante son las velocidades de carga de página rápidas.
  2. Multiplexar varias solicitudes a través de una conexión TCP. Tanto el servidor como el cliente pueden desglosar una solicitud HTTP en múltiples cuadros y reagruparlos en el otro extremo.
  3. Actuaciones web más rápidas que, en consecuencia, conducen a una mejor clasificación de SEO.
  4. Seguridad mejorada ya que la mayoría de los navegadores convencionales carga HTTP/2 sobre HTTPS.
  5. HTTP/2 se considera más amigable para dispositivos móviles gracias a la función de compresión del encabezado.

Dicho esto, vamos a habilitar Http/2 en apache en Ubuntu 20.04 LTS y Ubuntu 18.04 LTS.

Prerrequisitos:

Antes de comenzar, asegúrese de habilitar Https en el servidor web de Apache antes de habilitar Http/2. Esto se debe a que todos los navegadores web convencionales admiten Http/2 encima Https. Tengo un nombre de dominio señalado a una instancia en Ubuntu 20.04 que ejecuta el servidor Apache asegurado utilizando el certificado de encrypt.

Además, se recomienda que tengas Apache 2.4.26 y versiones posteriores para servidores de producción que tienen la intención de hacer un cambio a Http/2.

Para verificar la versión de apache Estás ejecutando, ejecuta el comando:

$ apache2 -v 
Verifique la versión Apache en Ubuntu

Desde la salida, 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 host virtual Apache

Para comenzar, primero confirme que el servidor web se está ejecutando Http/1.1. Puede hacer esto en un navegador abriendo la sección de herramientas de desarrollador en Google Chrome utilizando el Ctrl + Shift + I combinación. Clickea en el 'Red'pestaña y localizar el'Protocolo' columna.

Confirmar la versión del protocolo HTTP

A continuación, habilite el Http/2 módulo Ubuntu ejecutando el siguiente comando.

$ sudo a2enmod http2 
Habilitar http/2 en ubuntu

A continuación, localice y edite su Ssl Archivo de host virtual, si ha habilitado https usando Vamos a cifrar, Se crea un nuevo archivo con un LE-SSL.confusión sufijo.

$ sudo vim/etc/apache2/sites-habilitado/su dominio-name-le-ssl.confusión 

Inserte la directiva a continuación después del etiqueta.

Protocolos H2 HTTP/1.1 
Habilitar HTTP/2 en Apache

Para guardar los cambios, reinicie Apache Webserver.

$ sudo systemctl reiniciar apache2 

Para verificar si Http/2 está habilitado, obtenga los encabezados HTTP utilizando el siguiente comando curl como se muestra.

$ curl -i --http2 -s https: // dominio.com/ | grep http 
Verifique el soporte HTTP/2 en Apache

Debería obtener la salida que se muestra.

Http/2 200 

En el navegador, vuelva a cargar su sitio. Luego regrese a las herramientas del desarrollador y confirme http/2 denotado por el H2 etiqueta en el 'Protocolo' columna.

Confirmar la versión del protocolo HTTP/2

Cuando se usa el módulo mod_php con Apache

Si estas corriendo apache junto con el mod_php módulo, debe cambiar a Php-FPM. Esto es porque el mod_php El módulo usa la prefork Mpm módulo que no es compatible con Http/2. Necesitas desinstalar la prefork Mpm y cambiar a la mpm_event módulo que será compatible con Http/2.

Si esta utilizando el Php 7.4 mod_php El módulo, por ejemplo, lo desactiva como se muestra:

$ sudo a2DISMOD PHP7.4 
Deshabilitar el módulo MOD_PHP

A partir de entonces, deshabilite la prefork Mpm módulo.

$ sudo a2dismod mpm_prefork 
Deshabilitar MPM prefork en Apache

Después de deshabilitar los módulos, a continuación, habilite el Evento MPM, Fast_cgi, y setenvif Módulos como se muestra.

$ sudo a2enmod mpm_event proxy_fcgi setenvif 
Habilitar el evento MPM en Apache

Instale PHP-FPM en Ubuntu

A continuación, instale y comience Php-FPM como se muestra.

$ sudo apt instalación php7.4-FPM $ sudo SystemCTL Inicio PHP7.4-FPM 

Luego habilitar Php-FPM Para comenzar en el momento del arranque.

$ sudo systemctl habilita php7.4-FPM 

A continuación, habilitar Php-FPM Como controlador PHP de Apache, y reinicie el servidor web de Apache para que se efectúen los cambios.

$ sudo a2enconf php7.4-FPM 

Habilitar soporte HTTP/2 en Apache Ubuntu

Luego habilite el módulo HTTP/2 como antes.

$ sudo a2enmod http2 

Reiniciar Apache para sincronizar todos los cambios.

$ sudo systemctl reiniciar apache2 

Finalmente, puede probar si su servidor está usando el Http/2 Protocolo usando el comando curl como se muestra.

$ curl -i --http2 -s https: // dominio.com/ | grep http 
Verifique el protocolo HTTP/2 en Apache

También puede optar por usar las herramientas de desarrollador en el Google Chrome navegador para verificar como se documentó anteriormente. Tenemos hasta el final de esta guía, esperamos que haya encontrado la información valiosa y que pueda habilitar cómodamente Http/2 en apache con facilidad.