Come abilitare HTTP/2 con supporto ALPN su NGINX e Centos 7

Come abilitare HTTP/2 con supporto ALPN su NGINX e Centos 7

Che cos’è il protocollo HTTP/2

Il protocollo HTTP/2 è l’evoluzione del precedente HTTP/1.1 che rende possibile la comunicazione tra il server web hosting e il browser.
La principale novità che introduce http/2 è la funzionalità del multiplexing  che permette al web server e al browser di trasferire i vari file di un sito web tramite un unica connessione.
I vantaggi principali sono la velocità di caricamento dei contenuti web.
Centos 7 attualmente supporta HTTP/2 ma non ALPN , ALPN acronimo di Application-Layer Protocol Negotiation è un’estensione TLS che permette la negoziazione del protocollo tra server e client.
Questo perchè Centos 7 non include le ultime versioni di openssl, in questa guida vederemo come ricompilare nginx per utilizzare una versione openssl che supporti ALPN.

Prerequisiti

Un server o un VPS con Centos 7 installato, un sertificato SSL valido (anche Let’s Encrypt), accesso di root.

Installazione dei tools di sviluppo

Questa operazione prepara il sistema alla compilazione, scaricando i pacchetti necessari:

yum -y groupinstall 'Development Tools'
yum -y install wget openssl-devel libxml2-devel libxslt-devel gd-devel perl-ExtUtils-Embed GeoIP-devel

Definizione delle versioni di openssl e di Nginx

Definiamo le versioni di openssl e di Nginx, al momento della scrittura di questa guida le versioni stabili più recenti sono:

OPENSSL="openssl-1.1.0f"
NGINX="nginx-1.12.1-1"

Installiamo openssl

Scarichiamo l’ultima versione stabile di Openssl e la posizioniamo in /opt/lib:

mkdir -p /opt/lib
wget https://www.openssl.org/source/$OPENSSL.tar.gz -O /opt/lib/$OPENSSL.tar.gz
tar -zxvf /opt/lib/$OPENSSL.tar.gz -C /opt/lib

Compiliamo ed installiamo Nginx

rpm -ivh http://nginx.org/packages/centos/7/SRPMS/$NGINX.el7.ngx.src.rpm
sed -i "s|--with-http_ssl_module|--with-http_ssl_module --with-openssl=/opt/lib/$OPENSSL|g" /root/rpmbuild/SPECS/nginx.spec
rpmbuild -ba /root/rpmbuild/SPECS/nginx.spec
rpm -ivh /root/rpmbuild/RPMS/x86_64/$NGINX.el7.centos.ngx.x86_64.rpm

Configuriamo l’host Nginx per il nuovo protocollo

tralasciando la configurazione di ssl in Nginx riportiamo la piccola modifica necessaria per abilitare il nuovo protocollo sul web server, modifichiamo la riga:

listen 443 ssl;

in:

listen 443 ssl http2;

Riavviamo nginx.

Come possiamo testare che ALPN e HTTP/2 siano abilitati?

Potete testarlo tramite il tool online https://tools.keycdn.com/http2-test che eseguirà la verifica che http/2 e ALPN siano supportati:

Complimenti! ora il nostro web server è pienamente compatibile con HTTP/2 + ALPN.

Se ti interessa un server virtuale vedi le nostre offerte qui: https://www.rackone.it/virtual-private-server/

Potrebbe anche interessarti

Argomenti

Seguici