Come Abilitare HTTP/2 in Apache su Ubuntu

Dall’inizio del World Wide Web (www), il protocollo HTTP è evoluto negli anni per fornire contenuti digitali sicuri e veloci sul web.

La versione più ampiamente utilizzata è HTTP 1.1 e benché si componga di miglioramenti funzionali e ottimizzazioni di performance per colmare i buchi delle versioni precedenti, manca di alcune altre caratteristiche salienti che sono state affrontate con HTTP/2.

Che limiti ha HTTP/1.1?

Il protocollo HTTP/1.1 presenta i seguenti limiti che lo rendono meno ideale, specialmente quando si utilizzano server web ad alto traffico:

  1. Ritardi nell’caricamento delle pagine web a causa di header HTTP lunghi.
  2. HTTP/1.1 è in grado di inviare solo una richiesta per ogni file per connessione TCP.
  3. Date le caratteristiche di HTTP/1.1, i browser sono costretti a inviare un’enorme quantità di connessioni TCP parallele per processare contemporaneamente le richieste. Questo porta a congestioni TCP e, di conseguenza, a sprechi di banda e a degradazione della rete.

I problemi citati prima hanno spesso portato a una degradazione delle prestazioni e a costi di overhead elevati per l’utilizzo della banda. HTTP/2 è entrato in scena per affrontare questi problemi ed è ora il futuro dei protocolli HTTP.

Vantaggi dell’utilizzo di HTTP/2

Offre i seguenti vantaggi:

  1. Compressione degli header, che minimizza le richieste del cliente e quindi riduce il consumo della banda. L’effetto finale è la caricatura veloce delle pagine.
  2. Multiplexare più richieste su una singola connessione TCP. Sia il server che il client possono suddividere una richiesta HTTP in più frame e ricomporli all’altro capo.
  3. Performance web più veloci che di conseguenza portano a un miglior ranking SEO.
  4. Maggiore sicurezza poiché la maggior parte dei browser principali carica HTTP/2 su HTTPS.
  5. HTTP/2 è considerato più adatto ai dispositivi mobili grazie alla funzionalità di compressione degli header.

Detto ciò, stiamo per abilitare HTTP/2 su Apache su Ubuntu 20.04 LTS e Ubuntu 18.04 LTS.

Prerequisiti:

Prima di iniziare, assicurati di abilitare HTTPS sul web server Apache prima di abilitare HTTP/2. Questo perché tutti i principali browser web supportano HTTP/2 su HTTPS. Ho un nome di dominio puntato a un’istanza su Ubuntu 20.04 che è in esecuzione su server Apache protetto utilizzando un certificato Let’s Encrypt.

Inoltre, si raccomanda di avere Apache 2.4.26 o versioni successive per i server di produzione che intendono passare a HTTP/2.

Per controllare la versione di Apache in uso, esegui il comando:

$ apache2 -v
Check Apache Version in Ubuntu

Dall’output, puoi vedere che stiamo utilizzando l’ultima versione, che è Apache 2.4.41 al momento della stesura di questo articolo.

Abilita HTTP/2 su un Virtual Host Apache

Per iniziare, conferma prima che il webserver stia eseguendo HTTP/1.1. Puoi farlo su un browser aprendo la sezione degli strumenti per sviluppatori su Google Chrome utilizzando la combinazione Ctrl + MAIUSC + I. Clicca sulla scheda ‘Rete’ e localizza la colonna ‘Protocollo’.

Confirm HTTP Protocol Version

Successivamente, abilita il modulo HTTP/2 su Ubuntu eseguendo il seguente comando.

$ sudo a2enmod http2
Enable HTTP/2 on Ubuntu

Successivamente, localizza e modifica il tuo file di virtual host SSL, se hai abilitato HTTPS utilizzando Let’s Encrypt, verrà creato un nuovo file con il suffisso le-ssl.conf.

$ sudo vim /etc/apache2/sites-enabled/your-domain-name-le-ssl.conf

Inserisci la direttiva qui sotto dopo il tag <VirtualHost *:443>.

Protocols h2 http/1.1
Enable HTTP/2 on Apache

Per salvare le modifiche, riavvia il webserver Apache.

$ sudo systemctl restart apache2

Per verificare se HTTP/2 è abilitato, recupera le intestazioni HTTP utilizzando il seguente comando curl come mostrato.

$ curl -I --http2 -s https://domain.com/ | grep HTTP
Check HTTP/2 Support in Apache

Dovresti ottenere l’output mostrato.

HTTP/2 200

Sul browser, ricarica il tuo sito. Poi torna agli strumenti per sviluppatori e conferma HTTP/2 denotato dall’etichetta h2 sulla colonna ‘Protocollo’.

Confirm HTTP/2 Protocol Version

Quando si utilizza il modulo mod_php con Apache

Se stai eseguendo Apache insieme al modulo mod_php, è necessario passare a PHP-FPM. Questo perché il modulo mod_php utilizza il modulo MPM prefork che non è supportato da HTTP/2. È necessario disinstallare il modulo prefork MPM e passare al modulo mpm_event che sarà supportato da HTTP/2.

Se stai utilizzando il modulo PHP 7.4 mod_php, ad esempio, disabilitalo come mostrato:

$ sudo a2dismod php7.4 
Disable mod_php Module

In seguito, disabilita il modulo prefork MPM.

$ sudo a2dismod mpm_prefork
Disable Prefork MPM in Apache

Dopo aver disabilitato i moduli, successivamente, abilita i moduli Event MPM, Fast_CGI, e setenvif come mostrato.

$ sudo a2enmod mpm_event proxy_fcgi setenvif
Enable Event MPM in Apache

Installa PHP-FPM su Ubuntu

In seguito, installa e avvia PHP-FPM come mostrato.

$ sudo apt install php7.4-fpm 
$ sudo systemctl start php7.4-fpm

Successivamente, abilita PHP-FPM per avviarsi all’avvio.

$ sudo systemctl enable php7.4-fpm

Prossimo, abilita PHP-FPM come gestore PHP di Apache e riavvia il web server Apache affinché le modifiche abbiano effetto.

$ sudo a2enconf php7.4-fpm

Abilita il Supporto HTTP/2 in Apache Ubuntu

In seguito, abilita il modulo HTTP/2 come prima.

$ sudo a2enmod http2

Riavvia Apache per sincronizzare tutte le modifiche.

$ sudo systemctl restart apache2

Infine, puoi verificare se il tuo server sta utilizzando il protocollo HTTP/2 utilizzando il comando curl come mostrato.

$ curl -I --http2 -s https://domain.com/ | grep HTTP
Check HTTP/2 Protocol in Apache

Puoi anche optare per utilizzare gli strumenti per sviluppatori sul browser Google Chrome per verificare come documentato in precedenza. Abbiamo raggiunto la fine di questa guida, speriamo tu abbia trovato le informazioni utili e che tu possa abilitare HTTP/2 su Apache con facilità.

Source:
https://www.tecmint.com/enable-http2-in-apache-on-ubuntu/