Aumentare le prestazioni dei siti web con Nginx e Varnish cache

Aumentare le prestazioni dei siti web con Nginx e Varnish cache

La configurazione standard di un sito web è nel 90% dei casi basata su LAMP ovvero:

  • sistema operativo Linux
  • Server web Apache
  • Database Server Mysql
  • Php

Ovviamente le prestazioni di un sito dipendono fortemente da come questo è realizzato da un punto di vista del codice di programmazione e delle ottimizzazioni messe in atto per ridurre al massimo il numero di connessioni, la quantità di byte trasmessi, l’uso del processore e l’uso della memoria.

Va detto però che comunque sia fatto il sito web possiamo affermare oggi che si possono ottenere prestazioni migliori di un sistema LAMP utilizzando la combinazione di questi componenti di base:

  • Sistema operativo Linux
  • Server Nginx
  • Server di cache Varnish
  • Database Server Mysql
  • Php 7+

Oggi viene chiamata LEMP senza il server Varnish che noi aggiungiamo.

Come funziona il sistema Nginx + Varnish

Varnish funziona come un reverse proxy con sofisticate funzioni per la gestione della cache, ma con il grosso limite di non supportare il protocollo ssl (https). Per ovviare a questa sua mancanza si sfrutta Nginx per le chiamate in https in questo modo:

  • chiamata https al nostro server
  • risponde Nginx sulla porta 443 e come un reverse proxy redirige la chiamata al server Varnish nella porta 80
  • Varnish prende la chiamata applica le varie regole per vedere se prendere il contenuto nella propria cache. Se il contenuto è interamente nella cache lo restituirà come risposta, altrimenti manderà la richiesta al server web Nginx sulla porta 8080
  • Nginx sulla porta 8080 sarà configurato per far rispondere il nostro sito in php che restituirà l’output che risalirà tutta la catena delle chiamate.

In pratica Nginx si usa sia come front-end che come back-end.

Una configurazione del genere può essere fatta sia su di un singolo server che distribuita su più server ottenendo così una efficace distribuzione del carico delle chiamate.

Potrebbero esserci più server solo Varnish cache che vanno a chiamare il server web Nginx di Back-end. A sua volta anche l’ Nginx di front-end potrebbe essere separato e bilanciare le chiamate su più server Varnish.

Inoltre per quanto riguarda i siti in SSL Varnish consente di effettuare particolari funzioni che facilitano di molto il reindirizzamento delle richieste HTTP a HTTPS:

if (client.ip != "127.0.0.1" && req.http.host ~ "example-over-https.com") {
set req.http.x-redir = "https://www.example-over-https.com" + req.url;
return(synth(850, ""));
}

Questo fa si che noi dovremmo preoccuparci solo di far funzionare correttamente il nostro sito in http normale, mentre Varnish penserà a trasformare ogni url al nostro dominio in https.

Se siete interessati ad ottenere un server web con queste caratteristiche contattateci e sottoponeteci le vostre esigenze, saremo lieti di mettere a vostra disposizione le nostre conoscenze per ottenere la soluzione migliore in termini di prestazioni ed economicità della soluzione.