Ricerca nel sito web

Come abilitare HTTP/2 in Apache su Ubuntu


Fin dalla nascita del World Wide Web (www), il protocollo HTTP si è evoluto nel corso degli anni per fornire contenuti digitali sicuri e veloci su tutto il mondo. Internet.

La versione più utilizzata è HTTP 1.1 e, sebbene sia ricca di miglioramenti delle funzionalità e ottimizzazioni delle prestazioni per risolvere le carenze delle versioni precedenti, non è all'altezza di alcune altre funzionalità salienti che sono state risolte da HTTP 1.1 >HTTP/2.

Quali sono le limitazioni di HTTP/1.1?

Il protocollo HTTP/1.1 è irto delle seguenti carenze che lo rendono meno ideale soprattutto quando si eseguono server web ad alto traffico:

  1. Ritardi nel caricamento delle pagine Web a causa di intestazioni HTTP lunghe.
  2. HTTP/1.1 è in grado di inviare solo una richiesta per ciascun file per connessione TCP.
  3. Dato che HTTP/1.1 elabora una richiesta per ogni connessione TCP, i browser sono costretti a inviare un diluvio di connessioni TCP parallele per elaborare simultaneamente le richieste. Ciò porta alla congestione del TCP e, in definitiva, allo spreco di larghezza di banda e al degrado della rete.

I problemi sopra menzionati spesso portavano a un degrado delle prestazioni e a costi generali elevati nell'utilizzo della larghezza di banda. HTTP/2 è entrato in gioco per risolvere questi problemi e ora rappresenta il futuro dei protocolli HTTP.

Vantaggi dell'utilizzo di HTTP/2

Offre i seguenti vantaggi:

  1. Compressione dell'intestazione che riduce al minimo le richieste del client e quindi riduce il consumo di larghezza di banda. L'effetto risultante è un'elevata velocità di caricamento della pagina.
  2. Multiplexing di più richieste su una connessione TCP. Sia il server che il client possono suddividere una richiesta HTTP in più frame e raggrupparli all'altra estremità.
  3. Prestazioni web più veloci che di conseguenza portano a un migliore posizionamento SEO.
  4. Sicurezza migliorata poiché la maggior parte dei browser tradizionali carica HTTP/2 su HTTPS.
  5. HTTP/2 è considerato più ottimizzato per i dispositivi mobili grazie alla funzionalità di compressione dell'intestazione.

Detto questo, abiliteremo HTTP/2 su Apache su Ubuntu 20.04 LTS e Ubuntu 18.04 LTS.

Prerequisiti:

Prima di iniziare, assicurati di abilitare HTTPS sul server web Apache prima di abilitare HTTP/2. Questo perché tutti i browser Web tradizionali supportano HTTP/2 su HTTPS. Ho un nome di dominio che punta a un'istanza su Ubuntu 20.04 che esegue un server Apache protetto tramite il certificato Let's Encrypt.

Inoltre, è consigliabile disporre di Apache 2.4.26 e versioni successive per i server di produzione che intendono passare a HTTP/2.

Per verificare la versione di Apache che stai utilizzando, esegui il comando:

apache2 -v

Dall'output, puoi vedere che stiamo utilizzando la versione più recente, che è Apache 2.4.41 al momento della stesura di questo articolo.

Abilita HTTP/2 su un host virtuale Apache

Per iniziare, verifica innanzitutto che il server web esegua HTTP/1.1. Puoi farlo su un browser aprendo la sezione degli strumenti per sviluppatori su Google Chrome utilizzando la combinazione Ctrl + MAIUSC + I. Fai clic sulla scheda "Rete" e individua la colonna "Protocollo".

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

sudo a2enmod http2

Successivamente, individua e modifica il tuo file host virtuale SSL. Se hai abilitato HTTPS utilizzando Let's Encrypt, verrà creato un nuovo file con le-ssl.conf suffisso.

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

Inserisci la direttiva seguente dopo il tag .

Protocols h2 http/1.1

Per salvare le modifiche, riavviare il server web Apache.

sudo systemctl restart apache2

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

curl -I --http2 -s https://domain.com/ | grep HTTP

Dovresti ottenere l'output mostrato.

HTTP/2 200

Nel browser, ricarica il tuo sito. Quindi torna agli strumenti per sviluppatori e conferma HTTP/2 indicato dall'etichetta h2 nella colonna "Protocollo".

Quando si utilizza il modulo mod_php con Apache

Se utilizzi Apache insieme al modulo mod_php, devi passare a PHP-FPM. Questo perché il modulo mod_php utilizza il modulo MPM prefork che non è supportato da HTTP/2. Devi disinstallare il 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 

Successivamente disabilitare il modulo MPM prefork.

sudo a2dismod mpm_prefork

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

sudo a2enmod mpm_event proxy_fcgi setenvif

Installa PHP-FPM su Ubuntu

Successivamente, installa e avvia PHP-FPM come mostrato.

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

Quindi abilita PHP-FPM per l'avvio all'avvio.

sudo systemctl enable php7.4-fpm

Successivamente, abilita PHP-FPM come gestore PHP di Apache e riavvia il server web Apache per rendere effettive le modifiche.

sudo a2enconf php7.4-fpm

Abilita il supporto HTTP/2 in Apache Ubuntu

Quindi abilitare 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 utilizza il protocollo HTTP/2 utilizzando il comando curl come mostrato.

curl -I --http2 -s https://domain.com/ | grep HTTP

Puoi anche scegliere di utilizzare gli strumenti per sviluppatori sul browser Google Chrome per verificare come documentato in precedenza. Siamo giunti alla fine di questa guida. Ci auguriamo che tu abbia trovato utili le informazioni e che tu possa abilitare comodamente HTTP/2 su Apache con facilità.