Come funziona Varnish Cache + NGINX Reverse Proxy

Pubblicato: 2022-08-09

In questo articolo discuteremo del proxy inverso NGINX della cache di Varnish e di come configurarlo.

Un server proxy con un'enfasi sulla memorizzazione nella cache HTTP è Varnish. È fatto per essere un acceleratore HTTP e può funzionare come proxy inverso per il tuo server web Apache o NGINX. I siti Web con molto traffico e grande risalto hanno implementato Varnish.

Sommario

Cos'è la cache di vernice?

Per un'azienda basata sul Web, la cache è spesso il software più importante. Varnish Cache è un potente motore HTTP open source/proxy HTTP inverso che fa esattamente ciò che suggerisce il nome: memorizza nella cache (o memorizza) una copia di una pagina web la prima volta che un visitatore la visualizza. Ciò può velocizzare un sito Web fino al 1000 percento. Varnish effettua una singola richiesta al tuo server per memorizzare nella cache la pagina, dopodiché gestisce tutte le richieste successive per la stessa pagina. Ciò si traduce in una consegna dei contenuti incredibilmente rapida e una minore richiesta di risorse del server back-end.

  • Le competenze principali di Varnish sono velocità e prestazioni.
  • Risparmio dell'infrastruttura del server
  • Scalabilità: la vernice consente al tuo sito di soddisfare la domanda indipendentemente dal volume di visitatori o richieste.
  • Protezione dalle interruzioni: Varnish continua a fornire le informazioni memorizzate nella cache anche in caso di arresto anomalo del server.
  • Flessibilità: il Varnish Configuration Language (VCL) consente la creazione di soluzioni, regole e moduli specializzati.
  • Esperienza utente migliorata

Come funziona Varnish Cache?

Prima che raggiungano il back-end del tuo server web, Varnish elabora tutte le richieste in arrivo. La sua cache gestisce tutto il traffico web e, per impostazione predefinita, si aggiorna ogni due minuti.

Varnish Cache Nginx Reverse Proxy

Varnish instraderà la richiesta al back-end del server Web e memorizzerà nella cache il risultato, come abbiamo appena visto nel paragrafo del proxy inverso generico se la richiesta non è memorizzata nella cache.

Una volta che le richieste sono state memorizzate nella cache, vengono messe in memoria e possono quindi essere rapidamente recuperate e inviate ai clienti. Varnish utilizza il linguaggio VCL per esprimere impostazioni, criteri di memorizzazione nella cache e altre regole (Varnish Configuration Language).

Puoi rispondere a ciascuna richiesta in modo diverso utilizzando questa lingua e le sue varianti. Ad esempio, puoi indirizzare determinate richieste a un backend specifico o indicare a Varnish di intraprendere un'azione diversa in base alle caratteristiche della richiesta in arrivo o ai suoi risultati.

Il materiale memorizzato nella cache può ancora essere fornito anche quando il server Web non è disponibile a causa di una funzionalità integrata chiamata polling back-end, che è un'altra straordinaria funzione di Varnish. Varnish continuerà a fornire contenuto memorizzato nella cache per un intervallo di tempo noto come tempo di grazia se rileva un tempo di inattività. Il polling di back-end interroga il server a una frequenza che puoi impostare in modo flessibile.

Cos'è Nginx?

NGINX è un software open source che può essere utilizzato per streaming video, memorizzazione nella cache, proxy inverso, servizio Web e altre funzioni. Inizialmente è nato come un server web costruito per la massima velocità e affidabilità. NGINX può funzionare come server HTTP, server proxy e-mail (IMAP, POP3 e SMTP), proxy inverso e bilanciatore del carico per server HTTP, TCP e UDP oltre a fungere da server HTTP.

Che cos'è il proxy inverso?

La funzione principale di un proxy inverso è proteggere i server Web dal traffico in entrata. Ogni richiesta di connessione viene ricevuta da un proxy inverso, che la inoltra attraverso molti server prima di connettersi a quello che ha gestito la richiesta.

Ciascuna operazione di reverse proxy prevede tre fasi principali:

  1. Raccolta delle richieste di connessione: ai margini della rete, il proxy inverso accetta le richieste in entrata.
  2. Handshake a tre vie TCP: una connessione al proxy inverso viene creata dopo un handshake a tre vie TCP e la prima connessione viene chiusa.
  3. Connessione al server di origine: utilizzando un indirizzo IP fittizio, il proxy inverso connette il server di origine alla richiesta del client.

Gli utenti non possono mai connettersi direttamente a un server di origine poiché tutte le connessioni del browser Web alle app Web vengono sempre effettuate tramite un proxy inverso.

Come puoi impostare il proxy inverso Nginx della cache di Varnish?

Installa Nginx sul tuo server

Prima di tutto dobbiamo installare Nginx dal repository di Ubuntu usando il comando apt

 sudo apt update apt install nginx -y

Al termine dell'installazione, è necessario avviare e abilitare Nginx per l'avvio ogni volta all'avvio del sistema utilizzando il comando systemctl

 systemctl start nginx systemctl enable nginx

Configura Nginx sulla porta 88

Imposteremo Nginx per utilizzare la porta HTTP 8080 non convenzionale per il funzionamento. Per fare ciò, dobbiamo modificare i file dell'host virtuale che si trovano nella directory "siti-disponibili".

 nano /etc/nginx/sites-available/default

Cambia il valore della riga "ascolta" in 8080. Salva ed esci.

Verifica la presenza di errori testando le impostazioni di Nginx in questo momento. Dopodiché, riavvia il servizio.

 nginx -t systemctl restart nginx

Controlla Nginx ancora una volta usando netstat e conferma che funziona sulla porta HTTP non convenzionale 8080.

 netstat -plntu

È stato installato e la porta 8080 è attualmente utilizzata dal server Web Nginx.

Installa Vernice su Ubuntu

Dobbiamo installare la vernice usando il comando apt

 sudo apt install varnish -y

Utilizzando i comandi systemctl elencati di seguito, avviare Paint e impostarlo in modo che si avvii automaticamente all'avvio del sistema.

 systemctl start varnish systemctl enable varnish

Per impostazione predefinita, Paint utilizzerà la porta 6082 per l'interfaccia Web di amministrazione e la porta 6081 per l'accesso pubblico. Assicurati che alcune porte siano elencate usando il comando netstat per controllare.

 netstat -plntu

L'acceleratore HTTP Varnish è stato installato

Configura Varnish come proxy inverso per Nginx

Verrà utilizzato Varnish come proxy inverso per il server Web Nginx. Il server web Nginx funzionerà sulla porta HTTP 8080, mentre Varnish funzionerà sulla porta HTTP 80.

In questa fase, configureremo Varnish per Nginx, identificheremo il server back-end e modificheremo Varnish in modo che utilizzi la porta HTTP 80 come porta predefinita.

Modifica il file "default.vcl" andando subito nella directory di configurazione di Paint. e assicurati che l'host sia 127.0.0.1 e la porta sia 8080

 nano /etc/varnish/default.vcl

La configurazione del backend è terminata.

Il passaggio successivo consiste nel configurare Varnish per l'utilizzo della porta HTTP 80. Modificare il file di configurazione di Paint andando nella directory 'varnish' nella directory '/etc/default'.

 nano /etc/default/varnish

Assicurati che la tua porta predefinita sia 6081 e la porta HTTP sia 80

Il file del servizio di vernice nella directory '/lib/systemd/system' ora dovrebbe essere modificato. Modifica il file paint.service andando nella directory di sistema systemd.

 cd /lib/systemd/system nano varnish.service

Sostituire la porta HTTP 80 con la porta di vernice 6081 sulla riga 'ExecStart'.

Ora ricarica la configurazione di systemd e riavvia Paint

 systemctl daemon-reload systemctl restart varnish

Controlla la vernice usando il comando netstat

 netstat -plntu

la configurazione di vernice come proxy inverso per Nginx è stata completata

Configura firewall UFW

Il firewall leggibile predefinito sul sistema operativo Ubuntu si chiama "UFW". Usa il comando apt mostrato di seguito per installarli se non hai già il pacchetto.

 sudo apt install ufw

Accenderemo il firewall e apriremo nuove porte SSH, HTTP e HTTPS.

i comandi ufw elencati di seguito.

 ufw allow ssh ufw allow http ufw allow https

Ora accendi il firewall e fallo in modo tale che si avvii sempre all'avvio.

 ufw enable

Ora che il firewall UFW è attivo, entrambe le porte HTTP e HTTPS sono raggiungibili dalla rete esterna.