Ricerca nel sito web

Come abilitare HTTP/2 in Apache Web Server su Ubuntu e Debian


Su questa pagina

  1. Prerequisiti
  2. Disabilita il modulo mod_php
  3. Abilita un Apache MPM compatibile con HTTP/2
  4. Abilita il supporto HTTP/2 in Apache
  5. Link

Hypertext Transfer Protocol versione 2 (HTTP/2) è l'ultima versione del protocollo HTTP, pubblicata come standard IETF in RFC 7540 nel 2015. Il focus del protocollo è sulle prestazioni; in particolare, la latenza percepita dall'utente finale, la rete e l'utilizzo delle risorse del server. Uno degli obiettivi principali è consentire l'utilizzo di un'unica connessione dai browser a un sito Web. Il protocollo è compatibile con le versioni precedenti, quindi i metodi HTTP, i codici di stato e la semantica sono gli stessi delle versioni precedenti del protocollo. Apache supporta HTTP/2 dalla versione 2.4.17. In questo tutorial, presumo che tu abbia già una configurazione TLS funzionante e che tu abbia la versione Apache richiesta installata sulla tua distribuzione Linux preferita e che tu sappia come usare Lets Encrypt, o sai come emettere un certificato autofirmato.

Questo tutorial è stato testato su Debian 11, Debian 10, Debian 9, Ubuntu 22.04 LTS, Ubuntu 20.04 LTS e Ubuntu 18.04 LTS.

Prerequisiti

Per abilitare HTTP/2 in Apache dovrai soddisfare i seguenti requisiti:

  • Per prima cosa devi abilitare HTTPS sul tuo server. Tutti i principali browser consentono di utilizzare HTTP/2 solo su HTTPS. Inoltre, è richiesta la versione del protocollo TLS >= 1.2 con suite di crittografia moderne.
  • Successivamente, assicurati di eseguire Apache 2.4.17 o successivo perché HTTP/2 è supportato da questa versione e successive.
  • Inoltre, assicurati che il tuo client/browser supporti effettivamente HTTP/2.

Disabilita il modulo mod_php

Prima di poter cambiare il modulo Apache MPM nel passaggio successivo a mpm_event, dovremo disabilitare la vecchia modalità mod_php e sostituirla con la più moderna modalità PHP-FPM. I comandi differiscono per ogni versione del sistema operativo, utilizzare quelli che corrispondono al sistema installato.

Ubuntu 22.04 LTS

sudo apt-get install php8.1-fpm
sudo a2dismod php8.1
sudo a2enconf php8.1-fpm
sudo a2enmod proxy_fcgi

Debian 11

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

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

Abilita un Apache MPM compatibile con HTTP/2

Per impostazione predefinita, Apache utilizzerà l'MPM prefork. Questo MPM non è compatibile con HTTP/2, quindi dovremo sostituirlo con il più moderno modulo mpm_event.

Innanzitutto, disabilitiamo il modulo mpm_prefork:

sudo a2dismod mpm_prefork

Quindi abilitiamo il modulo mpm_event:

sudo a2enmod mpm_event

Abilita il supporto HTTP/2 in Apache

Per far funzionare HTTP/2 su Apache è necessario abilitare e caricare i moduli SSL e HTTP/2. Per fare ciò, puoi eseguire quanto segue nel tuo terminale:

sudo a2enmod ssl

poi

sudo a2enmod http2

Per attivare questi nuovi moduli è necessario eseguire:

sudo systemctl restart apache2

Dopo aver abilitato e caricato i moduli Apache necessari, vai alla directory di configurazione di Apache e modifica la configurazione di Apache.

Per abilitare HTTP/2 sul tuo server web Apache, aggiungi uno dei seguenti elementi alla configurazione globale di Apache o all'interno di un particolare host virtuale.

Protocols h2 http/1.1

Ecco la configurazione minima del server virtuale che può essere utilizzata per abilitare HTTP/2 in alcuni host virtuali:

<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>

Per verificare se il tuo server supporta HTTP/2, puoi utilizzare gli strumenti di sviluppo del browser. Di seguito sono screenshot dei browser Google Chrome e Apple Safari che mostrano HTTP/2 in azione sul dominio https://example.com.

Cromo

Safari

Collegamenti

  • RFC 7540
  • HTTP/2