Cómo habilitar HTTP/2 en el servidor web Apache en Ubuntu y Debian

HTTP/2 en el navegador Chrome

Protocolo de transferencia de hipertexto versi√≥n 2 (HTTP/2) es la √ļltima versi√≥n del protocolo HTTP, publicada como est√°ndar IETF en RFC 7540 en 2015. El enfoque del protocolo es el rendimiento; espec√≠ficamente, la latencia percibida por el usuario final, la red y el uso de recursos del servidor. Uno de los principales objetivos es permitir el uso de una √ļnica conexi√≥n desde los navegadores a un sitio web. El protocolo es compatible con versiones anteriores, por lo que los m√©todos HTTP, los c√≥digos de estado y la sem√°ntica son los mismos que para las versiones anteriores del protocolo. Apache tiene soporte HTTP/2 desde la versi√≥n 2.4.17. En este tutorial, supondr√© que ya tiene una configuraci√≥n de TLS en funcionamiento, que tiene instalada la versi√≥n de Apache requerida en la distribuci√≥n de Linux de su elecci√≥n y que sabe c√≥mo usar Let’s Encrypt, o sabe c√≥mo emitir un certificado autofirmado.

Este tutorial ha sido probado en Debian 10Debian 9, Ubuntu 20.04 LTS, y Ubuntu 18.04 LTS.

requisitos previos

Para habilitar HTTP/2 en Apache, deber√° cumplir con los siguientes requisitos:

  • Primero, debe habilitar HTTPS en su servidor. Todos los principales navegadores permiten usar HTTP/2 solo sobre HTTPS. Adem√°s, TLS Se requiere una versi√≥n de protocolo >= 1.2 con suites de cifrado modernas.
  • A continuaci√≥n, aseg√ļrese de que est√° ejecutando Apache 2.4.17 o superior porque HTTP/2 es compatible desde esta versi√≥n en adelante.
  • Adem√°s, aseg√ļrese de que su cliente/navegador admita HTTP/2.

Deshabilitar el módulo mod_php

Antes de que podamos cambiar el módulo MPM de Apache en el siguiente paso a mpm_event, tendremos que deshabilitar el antiguo modo mod_php y reemplazarlo con el modo PHP-FPM más moderno. Los comandos difieren para cada versión del sistema operativo, utilice los que coincidan con su sistema instalado.

Ubuntu 20.04 LTS

sudo apt-get install php7.4-fpm
sudo a2dismod php7.4
sudo a2enconf php7.4-fpm
sudo a2enmod proxy_fcgi

Debian 10

sudo apt-get install php7.3-fpm
sudo a2dismod php7.3
sudo a2enconf php7.3-fpm
sudo a2enmod proxy_fcgi

Ubuntu 18.04 LTS

sudo apt-get install php7.2-fpm
sudo a2dismod php7.2
sudo a2enconf php7.2-fpm
sudo a2enmod proxy_fcgi

Debian 9

sudo apt-get install php7.0-fpm
sudo a2dismod php7.0
sudo a2enconf php7.0-fpm
sudo a2enmod proxy_fcgi

Habilite un Apache MPM que sea compatible con HTTP/2

De forma predeterminada, Apache usará el prefork MPM. Este MPM no es compatible con HTTP/2, por lo que tendremos que sustituirlo por el módulo mpm_event más moderno.

Primero, deshabilitamos el módulo mpm_prefork:

sudo a2dismod mpm_prefork

Luego habilitamos el módulo mpm_event:

sudo a2enmod mpm_event

Habilite la compatibilidad con HTTP/2 en Apache

Para que HTTP/2 funcione en Apache, debe habilitar y cargar los módulos SSL y HTTP/2. Para hacerlo, puede ejecutar lo siguiente en su terminal:

sudo a2enmod ssl

y entonces

sudo a2enmod http2

Para activar estos nuevos módulos, debe ejecutar:

sudo systemctl restart apache2

Después de habilitar y cargar los módulos de Apache necesarios, navegue hasta el directorio de configuración de Apache y edite la configuración de Apache.

Para habilitar HTTP/2 en su servidor web Apache, agregue uno de los siguientes a su configuración global de Apache o dentro de un host virtual en particular.

Protocols h2 http/1.1

Esta es la configuraci√≥n m√≠nima del servidor virtual que se puede usar para habilitar HTTP/2 en alg√ļn host virtual:

<VirtualHost *:443>
  ServerName example.com
  ServerAlias www.example.com
  DocumentRoot /var/www/public_html/example.com
  SSLEngine on
  SSLCertificateKeyFile /path/to/private.pem
  SSLCertificateFile /path/to/cert.pem
  SSLProtocol all -SSLv3 -TLSv1 -TLSv1.1
  Protocols h2 http/1.1
</VirtualHost>

Para comprobar si su servidor es compatible con HTTP/2, puede utilizar las herramientas de desarrollo de su navegador. Las siguientes son capturas de pantalla de los navegadores Google Chrome y Apple Safari que muestran HTTP/2 en acción en el dominio https://example.com.

Cromo

HTTP/2 en el navegador ChromeAnuncio publicitario

Safari

HTTP/2 en el navegador Safari

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *