Come abilitare HTTP/2 su WordPress

Pubblicità

In questo tutorial andremo a spiegare come si possa configurare HTTP/2 su un sito, in modo da potenziare e migliorare i tempi di caricamento e di completamento della pagina web. Per fare questo lavoro è richiesta una connessione SSH al sito che si desidera ottimizzare, in modo da poterlo configurare nel dettaglio – per cui sui normali hosting condivisi normalmente HTTP/2 o è abilitato dall’inizio oppure non è possibile abilutarlo senza un upgrade del servizio.

Cos’è HTTP/2

HTTP/2 è un protocollo standard più evoluto del classico HTTP/1.1, e permette – come abbiamo visto nel tutorial su HTTP/2 – di potenziare i tempi di caricamento parallelizzando le connessioni HTTP (multiplexed TCP e funzionalità Server Push)che servono a caricare immagini, foto, JS, CSS e file esterni di ogni genere nel sito.

Per fare questo tutorial ho usato un sito con WordPress preinstallato e sistema operativo Ubuntu 16.04, ma la configurazione dovrebbe essere valida per qualsiasi altro sistema Ubuntu-based. Come pre-requisito, inoltre, è fortemente consigliata la conoscenza base dell’uso di SSH.

Cosa cambia con HTTP/2 rispetto a HTTP/1.1?

In breve: il sito diventa più veloce e potrebbe impiegare di meno a caricare globalmente le pagine.

Lo switch ad HTTP/2 potrebbe tuttavia non produrre differenze di rilievo su siti molto piccoli, mal progettati o con piccoli volumi di visitatori, e comunque deve essere configurato anche nel sito in modo adeguato a seconda del portale e delle necessità o configurazioni pre-esistenti: ad esempio, con l’introduzione di HTTP/2 il minify dei file non dovrebbe più servire a molto, GZIP potrebbe creare problemi di codifica (meglio disabilitarlo, quindi), anche se poi bisogna sempre valutare nello specifico, caso per caso.

Requisiti

Per abilitare HTTP/2 in questi termini ci serviranno:

  • hosting VPS o dedicato con SSH abilitato
  • nome di dominio che abbia già HTTPS abilitato (va bene anche Let’s Encrypt).

Alcuni servizi di hosting anche italiani, comunque, supportano nativamente HTTP/2: eccone alcuni.

Aggiornare Ubuntu

Come prima cosa controllate di avere l’ultima versione stable di Apache, digitando da linea di comando:

apache2 -v

e verificando che la versione installata sia la 2.4. Questo è un requisito fondamentale da rispettare per non avere problemi nella configurazione in seguito. Se dovreste avere una versione di Apache precedente, dovrete probabilmente aggiungere il repository ufficiale in modo esplicito:

sudo add-apt-repository ppa:ondrej/apache2

E successivamente effettuare l’upgrade e l’update di Apache:

sudo apt update
sudo apt upgrade

La versione che ho usato di Apache per questo tutorial è precisamente la versione 2.4.27.

Configurare PHP FastCGI 7.2

Per funzionare in modo corretto con PHP, HTTP/2 richiede lo switch da mod_php (che nel mio server su DigitalOcean era alla versione 7.1) al più moderno php-fpm (che non altri sarebbe se non PHP FastCGI). Attenzione perchè se effettuate lo switch in modo esplicito come indicato e la versione non fosse supportata dal vostro hosting, rischierete di avere problemi di malfunzionamento: per cui appuntate sempre l’attuale versione di PHP prima di cambiarla, in modo da poterla ripristinare in caso di difficoltà.

La versione che ho installato di PHP è la 7.2, ma anche la 7.3 sembra andare bene – per la cronaca – e funzionare allo stesso modo:

sudo apt install php7.2-fpm 

A questo punto dovrete abilitare i moduli Apache proxy_fcgi e setenvif:

sudo a2enmod proxy_fcgi setenvif

abilitare ovviamente php7.2-fpm:

sudo a2enconf php7.2-fpm 

disabilitare il vecchio modulo mod_php:

sudo a2dismod php7.0 

e finalmente riavviare Apache:

sudo service apache2 restart

Switchare MPM da “prefork” a “event”

Il modulo di default MPM (Multi-Processing Module) Prefork non è compatibile con HTTP/2 e tende a generare l’errore:

AH10034: The mpm module (prefork.c) is not supported by mod_http2

motivo per cui dovremo passare alla versione più adatta “event”.

Come prima cosa disabilitiamo il “prefork” MPM:

sudo a2dismod mpm_prefork 

abilitiamo il modulo “event” MPM:

sudo a2enmod mpm_event 

Finalmente, riavviamo sia Apache che PHP 7.2:

sudo service apache2 restart 
sudo service php7.2-fpm restart

Configurare il virtual host per HTTP/2

Andate ad aprire il file di Apache2 della configurazione dei singoli siti, che normalmente troverete nella sottocartella:

/etc/apache2/sites_enabled/

una volta individuato il file (ad esempio 000-default.conf) bisogna editare il file stesso in corrispondenza del blocco

<VirtualHost>...</VirtualHost>

ed aggiungere come prima riga questa:

Protocols h2 h2c http/1.1

che in pratica abilita HTTP/2 su Apache, con fallback di emergenza su HTTP/1.1 nel caso in cui qualcosa andasse storto nella connessione.

Abilitare mod_http2 su Apache

Non ci resta, a questo punto, che abilitare il modulo http/2 su Apache:

sudo a2enmod http2

e riavviare tutto:

sudo service apache2 restart

Testare se il sito supporta HTTP/2

Potete verificare che il sito supporti HTTP/2 direttamente dalla console di debug di Firefox o Chrome. Diversamente, ci sono dei tool come quello di KeyCDN che permettono di verificare tutto al volo:

HTTP/2 Server Test

0 voti