Come configurare Nginx come Reverse Proxy Cache per WordPress Funzionalità e impostazioni specifiche per l'utilizzo di Nginx come Reverse Proxy di un sito web WordPress su Linux o Windows con Apache, Nginx o IIS

Wordpress - How to Fix Home Page Caching Issues by setting the Last-Modified response Header to the most recent post

Qualche settimana fa abbiamo pubblicato un tutorial che spiega come usare Nginx come reverse-proxy (proxy inverso) con funzioni di request buffering e caching usando una tecnica particolare, denominata edge-origin, che prevede l'interazione tra un servizio esposto al web che accetta le request HTTP degli utenti (edge) e le veicola a uno o più server HTTP retrostanti (origin) accessibili soltanto a lui: questa particolare configurazione ha innumerevoli vantaggi in termini di sicurezza e performance, specialmente se viene accompagnata da una configurazione adeguata del reverse proxy che consente di creare una cache statica dei contenuti HTTP più visitati.

I parametri di configurazione descritti nel precedente tutorial erano pensati per siti web generici, ma possono senz'altro essere ottimizzati ulteriormente - dal punto di vista delle prestazioni - per gestire al meglio scenari di caching specifici, a patto di conoscere la tecnologia con cui il server origin serve i propri contenuti. In questo articolo di follow-up vedremo come è possibile perfezionare la configurazione del file nginx.conf per ottimizzare le performance di Nginx nei casi in cui lo si utilizza come reverse-proxy di un tipico sito web abilitato per WordPress.

Inutile dire che il server origin, ovvero quello che serve il sito web su piattaforma WordPress, può essere Linux o Windows e utilizzare qualsiasi webserver (Apache, Nginx, IIS o altro), mentre il server edge, che ospita Nginx e accetta le request dal web, è normalmente una macchina Linux. I due servizi possono persino essere installati sulla stessa macchina Linux, a patto che il server web utilizzato come origin sia configurato per servire le proprie pagine su una porta diversa da quella che sarà esposta al pubblico (es. 8080 in luogo della 80): al tempo stesso,  installare tutto su una singola macchina è decisamente sconsigliabile se il sito web genera un gran numero di richieste HTTP, per ovvi motivi di performance.

Http

Ecco le impostazioni ottimizzate per WordPress che possono essere utilizzate all'interno della sezione http del file nginx.conf:

Tutte le opzioni di configurazione utilizzate sono precedute da un commento che spiega in dettaglio il loro funzionamento: nel caso in cui abbiate bisogno di ulteriori informazioni, vi consigliamo di consultare la documentazione ufficiale di Nginx, estremamente chiara ed esaustiva.

Ovviamente, se non volete che il vostro nginx.conf diventi troppo grande e di difficile lettura, potete anche inserire il tutto all'interno di un file separato - con un nome del tipo http.reverseproxy.conf - da creare nella cartella  /etc/nginx/  e poi da linkare al file di configurazione principale inserendo la seguente riga all'interno del file nginx.conf:

Server

Ecco le opzioni di configurazione da inserire all'interno della sezione server del file nginx.conf, subito sotto alle impostazioni    listen  e  server_name  che istruiscono Nginx sulle porte e nomi host a cui rispondere:

Location

Ultime, ma non per importanza, le impostazioni di configurazione per la sezione location:

Come si può evincere analizzando i vari comandi e i relativi commenti, ci siamo assicurati che la cache di Nginx venga bypassata in tutti i casi in cui l'utente è autenticato e/o effettua delle request a contenuti che non è opportuno mettere in cache: cookie di autenticazione WP, pagine di amministrazione, e così via: in questo modo le funzionalità di WordPress non saranno compromesse dalla presenza del reverse-proxy.

Il codice seguente rappresenta un esempio di file nginx.conf completo che è possibile mettere in piedi sommando tutte le impostazioni descritte in questo articolo:

Problematiche comuni

La maggior parte dei problemi che possono capitare quando si configura Nginx come reverse proxy sono relativi a una errata configurazione dei permessi di accesso ai file: per questo motivo è opportuno assicurarsi che l'utente nginx - o qualsiasi altro utente indicato dal parametro   user  all'interno del file nginx.conf - abbia modo di accedere in lettura e scrittura alle cartelle specificate nei parametri  working_directory , proxy_cache_path  e proxy_temp_path.

Nel caso in cui questo non sia sufficiente a risolvere il problema, è importante dare un'occhiata ai file di log accessi e/o errori generati  da Nginx durante l'esecuzione, ovvero   /var/log/nginx/access.log  e /var/log/nginx/error.log : nella maggior parte dei casi, sarà possibile recuperare tutte le informazioni necessarie per effettuare una ricerca sul web e risolvere la problematica.

Conclusioni

Per il momento è tutto! Spero sinceramente che queste impostazioni potranno essere d'aiuto agli amministratori di sistema che necessitano di ottimizzare la propria configurazione Nginx per gestire al meglio il reverse-proxy dei loro siti WordPress.

Questo post è parte di una serie di articoli, guide e tutorial sul web server e reverse proxy NGINX. Per leggere gli altri articoli, fai click qui!

 

About Ryan

IT Project Manager, Web Interface Architect e Lead Developer di numerosi siti e servizi web ad alto traffico in Italia e in Europa. Dal 2010 si occupa anche della progettazione di App e giochi per dispositivi Android, iOS e Mobile Phone per conto di numerose società italiane. Microsoft MVP for Development Technologies dal 2018.

View all posts by Ryan

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *


The reCAPTCHA verification period has expired. Please reload the page.

Questo sito usa Akismet per ridurre lo spam. Scopri come i tuoi dati vengono elaborati.