GNU/Linux >> Linux Esercitazione >  >> Linux

Come configurare Nginx con supporto HTTP/2 su Ubuntu 18.04

Nginx è un server Web open source robusto, veloce, affidabile e dinamico popolare per servire siti ad alto traffico. Inoltre, è ben noto per la sua facilità di configurazione, l'elevata scalabilità e il supporto per una miriade di protocolli.
Tra i protocolli supportati da Nginx c'è il nuovo protocollo HTTP/2 il cui principale vantaggio rispetto al suo predecessore HTTP 1.1 è l'elevata velocità di trasferimento richiesta per i siti Web ricchi di contenuti.

In questa guida, analizzeremo l'installazione e la configurazione di un server Nginx sicuro con supporto HTTP/2:

Prerequisiti

Per iniziare, esaminiamo il controllo del volo e vediamo se abbiamo quanto segue

  • Un'istanza del server di Ubuntu 18.04 LTS
  • Nginx versione 1.9.5 o successiva (per verificare la versione di Nginx, esegui nginx -v ), leggi Installa Nginx su Ubuntu 18.04.
  • OpenSSL versione 1.0.2 o successiva (verifica la versione utilizzando la versione openssl)
  • Un normale utente non root con privilegi sudo
  • Un nome di dominio completo (FQDN) In questo caso, utilizzeremo crazytechgeek.info acquistato da GoDaddy.

    Il record A del nome di dominio deve puntare all'indirizzo IP del server. crazytechgeek.info è stato indirizzato a 216.200.116.207.

  • Un certificato SSL (un certificato autofirmato o uno di Let's encrypt SSL. Allo stesso modo, puoi acquistarne uno da un provider diverso.

Fase 1 – Abilitazione del supporto HTTP/2.0

Per iniziare, si presume che tu abbia configurato il blocco del server Nginx su

/etc/nginx/sites-available/your_domain

Nel nostro caso, il blocco del server è /etc/nginx/sites-available/crazytechgeek.info .

Utilizzando il tuo editor di testo preferito, apri il file di blocco del server e individua il listen direttiva come mostrato

La prima direttiva indica le connessioni IPv6 mentre la seconda è per le connessioni IPv4

Ora modificheremo ogni direttiva per includere un http2 contrassegna come mostrato

Questo indicherà a Nginx di utilizzare HTTP/2 sui browser supportati

Salva il file di configurazione ed esci dall'editor.

Quindi, apri /etc/nginx/sites-available/default file e apportare le stesse modifiche

Salva ed esci dall'editor di testo.

Solo per assicurarti che non ci siano errori di sintassi in nessuno dei file Nginx, esegui il comando seguente

$ sudo nginx -t

Risultato

Fase 2 – Eliminazione di codici vecchi e insicuri

Affinché HTTP/2 funzioni come previsto, dobbiamo evitare di utilizzare crittografie vecchie e non sicure che sono state nella lista nera di HTTP/2. Le suite di crittografia sono algoritmi crittografici che determinano come crittografare il traffico.

Se certbot è stato utilizzato per ottenere i certificati, allora i codici nel percorso /etc/letsencrypt/options-ssl-nginx.conf non sono abbastanza sicuri per HTTP/2. Tuttavia, la modifica di questo file causerà solo errori e impedirà a certbot di applicare gli aggiornamenti. Ciò significa che dobbiamo specificare il nostro elenco di crittografie e indicare a Nginx di ignorare il file

Apri il file di configurazione per il blocco del server di dominio di Nginx

$ vim /etc/nginx/sites-available/crazytechgeek.info

Commenta questa riga

# include /etc/letsencrypt/options-ssl-nginx.conf;

Sotto quella riga, aggiungi la riga sottostante per definire le crittografie consentite

ssl_ciphers EECDH+CHACHA20:EECDH+AES128:RSA+AES128:EECDH+AES256:RSA+AES256:EECDH+3DES:RSA+3DES:!MD5;

Salva il file ed esci dall'editor di testo

Se è stato utilizzato un certificato autoassegnato o un certificato di terze parti, apri il file

/etc/nginx/snippets/ssl-params.conf 
$ sudo vim /etc/nginx/snippets/ssl-params.conf

Individua la riga come mostrato di seguito

...
ssl_ciphers ECDHE-RSA-AES256-GCM-SHA512:DHE-RSA-AES256-GCM-SHA512:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-SHA384;
...

Modifica il file di conseguenza come mostrato di seguito


...
ssl_ciphers EECDH+CHACHA20:EECDH+AES128:RSA+AES128:EECDH+AES256:RSA+AES256:EECDH+3DES:RSA+3DES:!MD5;

Infine salva ed esci dal file di configurazione

Ancora una volta controlla eventuali errori di configurazione di Nginx

$ sudo nginx -t

Se tutto è andato bene, dovresti vedere l'output di seguito come mostrato in precedenza

Riavvia Nginx

$ sudo systemctl reload nginx

Nel passaggio successivo, testeremo se il nostro server può server HTTP/2 pagine

Fase 3:verifica se HTTP/2 è abilitato

Ora proviamo se HTTP è in esecuzione e abilitato sul nostro server web Nginx
Nel tuo terminale, esegui il comando seguente

curl -I -L https://your_domain

Nel nostro caso, sarà

curl -I -L https://crazytechgeek.info

Risultato

In alternativa, puoi verificare HTTP/2 aprendo gli strumenti per sviluppatori di Google premendo

Ctrl + Shift + I 

Quindi, fai clic su Network Tab.

Nel Protocol colonna, assicurati di trovare l'etichetta h2

Fase 4 – Distribuzione della sicurezza del trasporto rigoroso HTTP

Infine, anche se sappiamo molto chiaramente che il nostro server può reindirizzare le richieste HTTP a HTTPS, vogliamo abilitare HSTS HTTP Strict Transport Security per eliminare tali reindirizzamenti. Se un browser dovesse imbattersi in un'intestazione HSTS, non tenterà di connettersi nuovamente al server per un certo periodo di tempo. L'IT scambierà i dati solo tramite il protocollo HTTPS sicuro e crittografato.

Per ottenere ciò, apri il file di configurazione di Nginx

$ vim /etc/nginx/nginx.conf

Aggiungi la riga sotto

add_header Strict-Transport-Security "max-age=15768000" always;

max-age è impostato in secondi

Se il tuo sito ha sottodomini e desideri applicare HSTS a tutti, aggiungi il includeSubDomains flag alla fine della riga

add_header Strict-Transport-Security "max-age=15768000; includeSubDomains" always;

Salva ed esci dal file di configurazione.

Come sempre, controlla se ci sono errori

$ sudo nginx -t


Infine, riavvia Nginx

$ sudo systemctl restart nginx

Conclusione

A questo punto, il tuo server Nginx sta ora servendo pagine HTTP/2.
Puoi anche visitare https://tools.keycdn.com/http2-test per testare lo stato HTTP/2 del tuo sito come mostrato

In alternativa, puoi anche visitare questo sito

https://http2.pro/

Per risultati più dettagliati usa

https://www.ssllabs.com/ssltest/


Linux
  1. Come installare il server HTTP Git con Nginx su Ubuntu 16.04

  2. Come installare HTTP Git Server con Nginx su Ubuntu 20.04

  3. Come configurare Nginx come proxy inverso su Ubuntu 20.04

  4. Come configurare Apache con HTTP/2 su Ubuntu 16.04

  5. Come configurare Nginx con supporto HTTP/2 su Debian 9

Come installare NGINX su Ubuntu 20.04

Come impostare la sincronizzazione dell'ora con NTP su Ubuntu 18.04

Come configurare un server Seafile con Nginx su Ubuntu 18.04

Come configurare un server FTP con ProFTPD in Ubuntu 18.04

Come configurare un server di posta con Modoboa su Ubuntu 20.04

Come abilitare HTTP/2 con Apache in Ubuntu