Hai da poco installato wordpress su stack LEMP con nginx e vorresti configurare un plugin di caching per velocizzare il tuo blog? Non sai quale plugin di caching utilizzare per rendere il tuo website più performante? Non sai come configurare wordpress per nginx?
Allora seguimi perché in questo articolo ti farò vedere come configurare al meglio nginx e wordpress per i tre principali plugin di caching ovvero WP Super Cache, WP Rocket e W3 Total Cache
I contenuti dell'articolo
Prerequisiti per l'esecuzione del tutorial
Come prerequisito indispensabile devi avere una VPS dedicata con preinstallato lo stack LEMP ovvero Linux (in questo tutorial utilizzo Ubuntu 18.04), nginx, MySQL, php e soprattutto wordpress installato e funzionante.
Se non sai cosa sia lo stack LEMP oppure vuoi sapere come installarlo su VPS dedicata allora ti consiglio questo mio articolo:
Se non sai come fare per installare wordpress su stack LEMP ti consiglio questo mio articolo:
Inoltre devi avere un utente (possibilmente non root) con diritti di accesso sudo
I migliori plugin di caching per wordpress
Esistono moltissimi plugin di caching per wordpress ovvero plugin che consentono di creare delle copie su disco (o anche in memoria) delle pagine web più utilizzate del blog. In questo modo quando un utente richiede una pagina viene fornita la versione in cache (statica su file) invece della versione a runtime (generata dal php con accesso al database).
Utilizzare un plugin di caching per wordpress è una buona pratica per una serie di motivi quali, ad esempio:
- velocizzazione nel caricamento delle pagine
- riduzione del carico del webserver
- integrazione con cdn esterne (Cloudflare, KeyCDN, …)
- compressione dei contenuti
In questo articolo ti farò vedere come configurare al meglio la coppia wordpress e nginx per i seguenti plugin di caching: WP Rocket ,W3 Total Cache e WP Super Cache
Vuoi sapere se le performance del tuo blog wordpress potrebbero essere migliorate? Ti interessa sapere come fare a configurare un plugin di caching per il tuo blog su stack LEMP con nginx?
Ottimizzare wordpress con nginx
Prima di vedere come configurare i plugin di caching è necessario rivedere la configurazione generale di nginx per l'ottimizzazione con wordpress.
Se hai seguito i miei precedenti tutorial su come installare nginx e come installare wordpress ti troverai nella situazione in cui nginx è installato e configurato nella versione minimale per il corretto funzionamento di wordpress.
Ti ricordo che nei tutorial utilizzerò le seguenti directory per il file di configurazione di nginx e la wwwroot ovvero la home directory del webserver nella quale installare wordpress:
/etc/nginx/sites-available/wordpress => file di configurazione di nginx
/var/wwwroot/html/ => home directory wordpress
Procedi quindi con la modifica del file di configurazione con il comando
$ cd /etc/nginx/sites-available/
$ sudo nano wordpress
ed aggiungi
location ~ /\.ht { deny all; }
per inibire eventuali configurazioni fatte con file .htaccess di apache
Configurare WP Rocket con nginx
Per configurare WP Rocket con nginx devi procedere prima di tutto con l'installazione e relativa attivazione del plugin che puoi trovare a questo link.
Una volta attivato è necessario procedere l'installazione del componente rocket-nginx di SatelliteWP, un semplice tool che ti permetterà di ottenere una configurazione ottimale di nginx con WP Rocket, la guida originale la trovi a questo link.
Come prima cosa accedi alla default root di nginx e scarica il tool con i comandi
cd /etc/nginx git clone https://github.com/satellitewp/rocket-nginx.git
Poi accedi alla directory appena generata e crea il file di configurazione wprocket per nginx con i comandi:
cd rocket-nginx cp rocket-nginx.ini.disabled rocket-nginx.ini php rocket-parser.php
Al termine avrai generato il nuovo file default.conf con i settaggi necessari e che dovrai includere nel file di configurazione di nginx, tramite il comando:
$ cd /etc/nginx/sites-available/
$ sudo nano wordpress
Aggiungi il testo in grassetto nella sezione “location”:
location / { try_files $uri $uri/ =404; #Rocket-Nginx Configuration include rocket-nginx/default.conf; }
A questo punto puoi verificare la correttezza dei settaggi con il comando:
$ sudo nginx -t
Se tutto è ok allora puoi riavviare nginx
$ sudo systemctl reload nginx
La configurazione è terminata.
Configurare W3 Total Cache con nginx
Per configurare W3 total cache con nginx devi procedere prima di tutto con l'installazione e relativa attivazione del plugin.
Una volta attivato, il plugin capisce in automatico (ed è l'unico dei tre che lo fa) che il webserver che stai utilizzando è nginx, per cui crea il file nginx.conf nella wwwroot del tuo website:
/var/wwwroot/html/nginx.conf
Il file contiene già tutte le impostazioni necessarie, frutto dei settaggi del plugin, per il corretto funzionamento della cache con nginx, quindi dovrai solo inserire il path corretto di questo file nel file di configurazione di nginx, tramite il comando:
$ cd /etc/nginx/sites-available/
$ sudo nano wordpress
Ed aggiungi il testo in grassetto nella sezione “location”:
location / { try_files $uri $uri/ =404; #W3TC Configuration include /var/www/html/nginx.conf; }
A questo punto puoi verificare la correttezza dei settaggi con il comando:
$ sudo nginx -t
Se tutto è ok allora puoi riavviare nginx
$ sudo systemctl reload nginx
La configurazione è terminata.
Configurare WP Super Cache con nginx
Per configurare WP Super Cache con nginx devi procedere prima di tutto con l'installazione e relativa attivazione del plugin.
Una volta attivato il plugin è necessario effettuare alcune modifiche manuali ai file di configurazione per ottimizzarlo al meglio.
Inizia con il creare il file wp-supercache.conf nella directory snippets con il comando:
sudo nano /etc/nginx/snippets/wp-supercache.conf
inserisci il seguente codice nel file set $cache_uri $request_uri; # POST requests and urls with a query string should always go to PHP if ($request_method = POST) { set $cache_uri 'null cache'; } if ($query_string != "") { set $cache_uri 'null cache'; } # Don't cache uris containing the following segments if ($request_uri ~* "(/wp-admin/|/xmlrpc.php|/wp-(app|cron|login|register|mail).php |wp-.*.php|/feed/|index.php|wp-comments-popup.php |wp-links-opml.php|wp-locations.php |sitemap(_index)?.xml |[a-z0-9_-]+-sitemap([0-9]+)?.xml)") { set $cache_uri 'null cache'; } # Don't use the cache for logged-in users or recent commenters if ($http_cookie ~* "comment_author|wordpress_[a-f0-9]+ |wp-postpass|wordpress_logged_in") { set $cache_uri 'null cache'; } # Set the cache file set $cachefile "/wp-content/cache/supercache/$http_host/$cache_uri/index.html"; if ($https ~* "on") { set $cachefile "/wp-content/cache/supercache/$http_host/$cache_uri/index-https.html"; } # Add cache file debug info as header #add_header X-Cache-File $cachefile; # Try in the following order: (1) cachefile, (2) normal url, (3) php location / { #try_files $cachefile $uri $uri/ /index.php; try_files $cachefile $uri $uri/ /wp/index.php?q=uri&$args; }
Salva il file e chiudi l'editor.
Ora non devi far altro che includere il file nel file principale di di nginx con il comando
$ cd /etc/nginx/sites-available/
$ sudo nano wordpress
Aggiungi il testo in grassetto nella sezione “location”:
location / { try_files $uri $uri/ =404; #WP Super Cache Configuration include snippets/wp-supercache.conf; }
A questo punto puoi verificare la correttezza dei settaggi con il comando:
$ sudo nginx -t
Se tutto è ok allora puoi riavviare nginx
$ sudo systemctl reload nginx
La configurazione è terminata.
Conclusioni
In questo articolo ti ho mostrato come configurare al meglio i tre principali plugin per wordpress dedicati al caching dei file php avendo nginx come webserver.
Tutti e tre i plugin sono ottimi, in questo articolo ne metto a confronto pregi e difetti in una configurazione standard ossia con apache ed hosting condiviso.
Cosa ne pensi di questo tutorial? Pensi che anche tu potresti migrare su VPS dedicata con nginx e wordpress? Quali dei tre plugin preferisci? Raccontami tutto nei commenti!