Dopo aver visto come utilizzare Nginx come proxy inverso, ti spiegherò in questo tutorial come configurare il caching degli elementi statici (immagine, file css, js….).
L’utilizzo della cache ridurrà il numero di richieste HTTP al server Web e quindi ridurrà il carico di lavoro.
Il primo passo sarà creare una cartella sul server in cui archiviare la cache.
sudo mkdir /var/cache/nginx_cache_sitename
Puoi creare la cartella cache dove vuoi sul server, se attivi la cache su più siti (virtualhost), ti consiglio di separare le cartelle.
Ora che abbiamo la cartella, passeremo alla configurazione del virtualhost.
Apri il file host virtuale:
sudo nano /etc/nginx/sites-available/sitename
Devi prima dichiarare la cache utilizzando il parametro proxy_cache_path che deve essere aggiunto prima del blocco server{}
Per questo utilizzeremo il parametro proxy_cache_path per indicare la configurazione della cache.
proxy_cache_path /var/cache/nginx_cache_sitename levels=1:2 keys_zone=cache_name_site:10m max_size=4g inactive=60m use_temp_path=off;
Questa riga viene utilizzata per configurare la posizione della cache, nonché la sua dimensione e durata. Il parametro keys_zone è importante, perché poi lo useremo per indicare quale cache viene utilizzata.
Ora configureremo l’host virtuale per utilizzare la cache per i file statici.
La configurazione viene eseguita nel blocco server{} dichiarando un blocco location{}.
Il codice seguente consente la memorizzazione nella cache di elementi statici (immagine, carattere, css e js).
# Cache IMG/CSS/JS/Font
location ~* \.(?:jpg|jpeg|gif|png|ico|woff2|css|js)$ {
proxy_cache cache_name_site;
proxy_pass https://taget_server_or_name;
proxy_ssl_verify off;
include proxy_params;
add_header X-Cache-Status $upstream_cache_status;
}
Come puoi vedere, è lo stesso di una configurazione, tranne per il fatto che aggiungiamo il parametro proxy_cache con il valore della chiave di cache che è stata configurata.
Il parametro add_header X-Cache-Status $upstream_cache_status; consente di aggiungere l’intestazione della risposta alla richiesta se è stata utilizzata la cache.
Che ci dà in un browser:
Una volta aggiunta la configurazione della cache a virtualhost, testa la configurazione:
sudo nginx -t
Ricaricare la configurazione per tenerne conto:
sudo systemctl reload nginx
Alcune informazioni aggiuntive
Svuota la cache di Nginx:
Per eliminare la cache è sufficiente svuotare la cartella:
sudo rm -rf /var/cache/nginx_cache/*
Esiste un altro metodo che utilizza a URL.
Cache in memoria: RAM
È anche possibile utilizzare la RAM del server per avere una cache ancora più veloce.
Crea la cartella della cache:
sudo mkdir -p /var/cache/nginx_ram
Montare la cartella nella RAM:
sudo mount -t tmpfs -o size=2G tmpfs /var/cache/nginx_ram
Tutto quello che devi fare è configurare questa cartella come posizione della cache.
Per rendere la modifica persistente:
Apri il file /etc/fstab:
sudo /etc/fstab
Aggiungi la seguente riga, adattandola alla tua configurazione:
sudo tmpfs /var/cache/nginx_ram tmpfs defaults,size=2G 0 0
Ora sai come configurare la cache con Nginx quando viene utilizzato come proxy inverso.
L’utilizzo della cache è pratico quando Nginx è posto sul front-end, questo permette di limitare il numero di richieste HTTP al server che ospita l’applicazione Web.
La configurazione della cache viene spesso utilizzata quando un server Apache2 si trova dietro il proxy, poiché Nginx è noto per essere molto efficiente nel servire file statici.