GNU/Linux >> Tutoriales Linux >  >> Ubuntu

Cómo habilitar el protocolo HTTP/2 con Apache en Ubuntu 20.04

Este tutorial le mostrará cómo habilitar el protocolo HTTP/2 y usar la inserción del servidor con Apache en Ubuntu 20.04. Como sabrá, HTTP/2 es mucho más rápido que el protocolo HTTP/1.1, principalmente porque el primero permite que un navegador web envíe múltiples solicitudes al servidor web al mismo tiempo en una sola conexión TCP (multiplexación) y reciba respuestas desordenadas. .

Hoy en día, el ancho de banda del usuario promedio de Internet es mucho más alto que antes, lo que ayuda a cargar las páginas web más rápido. Sin embargo, una vez que el ancho de banda alcanza los 5 Mbps, tiene poco impacto en el tiempo de carga de la página. Ya sea que esté utilizando 5 Mbps o 10 Mbps, las páginas web se cargan casi en la misma cantidad de tiempo. En estos días, lo que puede afectar en gran medida los tiempos de carga de la página es la latencia y la cantidad de viajes de ida y vuelta. Ese es uno de los problemas que resuelve la multiplexación HTTP/2.

Requisitos

La especificación HTTP/2 permite HTTP de texto sin formato, pero en la práctica, todos los principales navegadores web implementan HTTP/2 de una manera que requiere HTTPS. Entonces, antes de habilitar el protocolo HTTP/2, debe habilitar HTTPS en su sitio web. Puede leer la siguiente guía detallada para habilitar HTTPS

  • Cómo habilitar correctamente HTTPS en Apache con Let's Encrypt en Ubuntu.

HTTP/2 en Apache está listo para producción a partir de la versión 2.4.26. Entonces necesitará Apache 2.4.26 o superior construido con mod_http2 , el módulo Apache HTTP/2. Ubuntu 20.04 viene con Apache 2.4.41, que se puede comprobar con:

apache2 -v

Salida de muestra:

Server version: Apache/2.4.41 (Ubuntu)
Server built: 2020-04-13T17:19:17

Una vez que cumpla con los dos requisitos anteriores, siga las instrucciones a continuación para habilitar HTTP/2 en Apache.

Habilitar el protocolo HTTP/2 en el host virtual de Apache

Primero, debe habilitar el módulo HTTP/2.

sudo a2enmod http2

Luego edite su archivo de host virtual de Apache. Si habilitó HTTPS con Let's Encrypt, el host virtual SSL se crea como un archivo separado que termina en le-ssl.conf .

sudo nano /etc/apache2/sites-enabled/your-site-le-ssl.conf

Coloque la siguiente directiva después de la apertura <VirtualHost *:443> etiqueta.

Protocols h2 http/1.1

Guarde y cierre el archivo. Luego reinicie Apache para que los cambios surtan efecto.

sudo systemctl restart apache2

Si estás usando mod_php

Si usa mod_php módulo con Apache, entonces está utilizando el módulo MPM prefork. Desafortunadamente Mod_http2 no admite prefork. Puede usar el módulo MPM de eventos para admitir HTTP/2 y eso requiere que ejecute PHP con FastCGI porque MPM de eventos no es compatible con mod_php . Siga los pasos a continuación para cambiar de prebifurcación a evento MPM.

Deshabilitar el módulo PHP7.

sudo a2dismod php7.4  

Desactiva el módulo MPM prefork.

sudo a2dismod mpm_prefork

Habilite el módulo Event MPM, Fast_CGI y setenvif.

sudo a2enmod mpm_event proxy_fcgi setenvif

Instalar PHP-FPM

sudo apt install php7.4-fpm 

Iniciar PHP-FPM

sudo systemctl start php7.4-fpm

Habilite PHP-FPM para que se inicie en el momento del arranque.

sudo systemctl enable php7.4-fpm

Configure PHP-FPM como controlador de PHP de Apache usando el siguiente comando, que habilitará /etc/apache2/conf-available/php7.4-fpm .conf archivo.

sudo a2enconf php7.4-fpm

Reinicie Apache para que los cambios surtan efecto.

sudo systemctl restart apache2

Prueba

¿Cómo sabes que tu sitio realmente usa el protocolo HTTP2?

  • En Firefox o Google Chrome, carga una página de tu sitio y luego presiona Ctrl+Shift+I para abrir Herramientas para desarrolladores , haga clic en Red pestaña. Puede ver el protocolo que se utiliza para su dominio.
  • También puede instalar la extensión del indicador HTTP/2 y SPDY en Google Chrome.
  • Instala la extensión del indicador HTTP/2 en Firefox.
  • La herramienta de prueba en línea HTTP/2 de KeyCDN puede decirle si HTTP/2 y ALPN son compatibles con su sitio.

Tenga en cuenta que es posible que deba borrar el caché de su navegador porque los objetos almacenados en caché pueden estar marcados por error con el protocolo HTTP/1.1.

Cómo habilitar la inserción del servidor

HTTP/2 viene con una función llamada "empuje del servidor", que permite que el servidor web envíe recursos que el navegador web no solicitó, pero que se necesitan para cargar páginas web. Por ejemplo, si el navegador web solicita un documento HTML, entonces el servidor web sabe que el cliente necesitará el archivo CSS asociado y lo enviará junto con el documento HTML, eliminando así la necesidad de que el navegador web envíe la solicitud de CSS, por lo que una ronda el viaje se reduce.

Aquí, uso WordPress como ejemplo. Los siguientes recursos son comúnmente necesarios para el sitio de WordPress.

  • style.css:la hoja de estilo principal, ubicada en la raíz del directorio del tema.
  • jquery.js:biblioteca de JQuery
  • jquery-migrate.min.js:el antiguo JQuery
  • wp-embed.min.js:para incrustar videos

Para enviar estos recursos a los clientes, agregue las siguientes directivas en <VirtualHost> cuadra. Reemplace veintisiete con su propio nombre de tema de WordPress.

Header add Link "</wp-content/themes/twentyseventeen/style.css>;rel=preload"
Header add Link "</wp-includes/js/jquery/jquery.js>;rel=preload"
Header add Link "</wp-includes/js/jquery/jquery-migrate.min.js>;rel=preload"
Header add Link "</wp-includes/js/wp-embed.min.js>;rel=preload"

Guarde y cierre el archivo. Luego reinicie Apache para que los cambios surtan efecto.

sudo systemctl restart apache2

Tenga en cuenta que debe agregar el siguiente código en functions.php para eliminar el número de versión de los archivos CSS y JavaScript de WordPress. Cuando WordPress se actualice, la inserción del servidor no funcionará si se agrega el número de versión a estos archivos.

// Remove WP Version From Styles        
add_filter( 'style_loader_src', 'sdt_remove_ver_css_js', 9999 );
// Remove WP Version From Scripts
add_filter( 'script_loader_src', 'sdt_remove_ver_css_js', 9999 );

// Function to remove version numbers
function sdt_remove_ver_css_js( $src ) {
        if ( strpos( $src, 'ver=' ) )
                $src = remove_query_arg( 'ver', $src );
        return $src;
}

Prueba del envío del servidor

En el navegador Google Chrome, cargue su página, luego presione Ctrl+Shift+I para abrir las herramientas de desarrollo y haga clic en la pestaña Red. Presiona F5 para recargar. Como puede ver en la captura de pantalla a continuación, la inserción del servidor está funcionando en uno de mis sitios web. Si ve "desde la memoria caché", haga clic con el botón derecho en él, borre la memoria caché del navegador y vuelva a cargar.

Siguiente paso

¡Eso es todo! Espero que este tutorial le haya ayudado a habilitar HTTP/2 en Apache en Ubuntu 20.04 y a usar la inserción del servidor. También es posible que desee configurar el firewall de la aplicación web ModSecurity para proteger su sitio contra la piratería.

  • Cómo configurar ModSecurity con Apache en Debian/Ubuntu

Como siempre, si esta publicación le resultó útil, suscríbase a nuestro boletín gratuito.


Ubuntu
  1. Cómo instalar WordPress con Apache en Ubuntu 18.04

  2. Cómo instalar Joomla con Apache en Ubuntu 18.04

  3. Cómo habilitar HTTP/2 en Nginx en Ubuntu y CentOS

  4. Cómo configurar Apache con HTTP/2 en Ubuntu 16.04

  5. Cómo habilitar el protocolo HTTPS con Apache 2 en Ubuntu 20.04

Cómo configurar HTTP/2 en Nginx en Ubuntu 20.04

Cómo habilitar la compatibilidad con HTTP/2.0 en Apache

Cómo habilitar HTTP/2 en Apache en Ubuntu

Cómo habilitar HTTP/2.0 en Nginx

Cómo habilitar HTTP/2 en Apache en el sistema Linux

Cómo habilitar HTTP/2 con Apache en Ubuntu