Introduzione
Varnish e' un reverse proxy specializzato in caching HTTP, capace di servire pagine intere in pochi millisecondi senza coinvolgere PHP. Magento 2 e' progettato per integrarsi nativamente con Varnish, e il suo uso e' fortemente consigliato in produzione.
Architettura
In una configurazione tipica: client → Nginx (porta 80/443, SSL termination) → Varnish (porta 6081 o 8080) → Nginx/Apache (porta 8443 backend) → PHP-FPM. Varnish memorizza in RAM le pagine non personalizzate (categorie, prodotti, CMS).
Installazione
Su Ubuntu/Debian: apt install varnish. Versione consigliata: Varnish 7.x. Memoria: dimensionare il storage size in base al catalogo, tipicamente 1-4 GB per uno store di medie dimensioni.
Generare il VCL da Magento
Magento 2 fornisce un file VCL pronto. Da admin: System → Configuration → System → Full Page Cache, scegliere Caching Application = Varnish Cache, impostare TTL, Backend Host (es. 127.0.0.1) e Backend Port (es. 8080). Salvare e cliccare "Export VCL for Varnish 6" o 7 a seconda della versione.
Posizionamento del VCL
Il file scaricato va copiato in /etc/varnish/default.vcl. Riavviare Varnish: systemctl restart varnish. Verificare con varnishlog che le richieste passino e con varnishstat le hit rate.
ESI per blocchi dinamici
Mini-cart, customer info e cross-sell sono blocchi personalizzati: Magento li serve tramite ESI (Edge Side Includes), risolti da Varnish lato server senza invalidare la pagina principale.
PURGE e ban
Varnish viene istruito dal Magento backend a invalidare URL specifici tramite richieste PURGE. La sezione access_list nel VCL deve includere l'IP del server Magento.
SSL e Varnish
Varnish non gestisce SSL: e' necessario un reverse proxy SSL davanti (Nginx, Hitch). In genere Nginx termina SSL, passa a Varnish e Varnish al backend HTTP interno.
Diagnostica
Controllare l'header Y-Magento-Cache-Debug: HIT/MISS indica se la cache funziona. Su prima visita ci si aspetta MISS, dalla seconda HIT.
Hai bisogno di aiuto?
Se vuoi un Magento ottimizzato dal team di G Tech Group, scrivici tramite il modulo di contatto.