La velocità della pagina o il tempo di caricamento sono fondamentali per il successo del tuo negozio online. Il tempo di caricamento è il tempo totale necessario per caricare il contenuto di una pagina specifica. Maggiore è il tempo di caricamento, minore è il tasso di conversione. È anche uno dei fattori più importanti che Google considera per determinare il posizionamento nei motori di ricerca.
Nel primo post, abbiamo installato Magento 2 sulla nostra macchina CentOS 7. Nel secondo post di questa serie, tratteremo l'installazione e la configurazione di Varnish per rendere il nostro negozio Magento super veloce.
Prerequisiti #
Assicurati di aver seguito le istruzioni del primo post e di avere EPEL
repository abilitato.
Come funziona #
Varnish non supporta SSL, quindi dobbiamo utilizzare un altro servizio come proxy di terminazione SSL, nel nostro caso sarà Nginx.
Quando un visitatore apre il tuo sito web su HTTPS
sulla porta 443
la richiesta sarà gestita da Nginx che funge da proxy e passa la richiesta a Varnish (sulla porta 80). Varnish controlla se la richiesta è memorizzata nella cache o meno. Se è memorizzato nella cache, Varnish restituirà i dati memorizzati nella cache a Nginx senza una richiesta all'applicazione Magento. Se la richiesta non è memorizzata nella cache, Varnish passerà la richiesta a Nginx sulla porta 8080
che estrarrà i dati da Magento e Varnish memorizzerà nella cache la risposta.
Se un visitatore apre il tuo sito web senza SSL
sulla porta 80
quindi verrà reindirizzato al HTTPS
sulla porta 443
URL per vernice.
Configurazione di Nginx #
Dobbiamo modificare il blocco del server Nginx che abbiamo creato nel primo post per gestire la terminazione SSL/TLS e come back-end per Varnish.
/etc/nginx/conf.d/example.com.confupstream fastcgi_backend {
server unix:/run/php-fpm/magento.sock;
}
server {
listen 127.0.0.1:8080;
server_name example.com www.example.com;
set $MAGE_ROOT /opt/magento/public_html;
set $MAGE_MODE developer; # or production
include snippets/letsencrypt.conf;
include /opt/magento/public_html/nginx.conf.sample;
}
server {
listen 443 ssl http2;
server_name www.example.com;
ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
ssl_trusted_certificate /etc/letsencrypt/live/example.com/chain.pem;
include snippets/ssl.conf;
return 301 https://example.com$request_uri;
}
server {
listen 443 ssl http2;
server_name example.com;
ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
ssl_trusted_certificate /etc/letsencrypt/live/example.com/chain.pem;
include snippets/ssl.conf;
access_log /var/log/nginx/example.com-access.log;
error_log /var/log/nginx/example.com-error.log;
location / {
proxy_pass http://127.0.0.1;
proxy_set_header Host $http_host;
proxy_set_header X-Forwarded-Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto https;
proxy_set_header X-Forwarded-Port 443;
}
}
Abbiamo anche bisogno di rimuovere il blocco del server Nginx predefinito da nginx.conf
file. Commenta o elimina le seguenti righe:
...
# server {
# listen 80 default_server;
# listen [::]:80 default_server;
# server_name _;
# root /usr/share/nginx/html;
#
# # Load configuration files for the default server block.
# include /etc/nginx/default.d/*.conf;
#
# location / {
# }
#
# error_page 404 /404.html;
# location = /40x.html {
# }
#
# error_page 500 502 503 504 /50x.html;
# location = /50x.html {
# }
# }
...
Ricarica il servizio Nginx per rendere effettive le modifiche:
sudo systemctl reload nginx
Installazione e configurazione della vernice #
Varnish è un veloce acceleratore HTTP proxy inverso che si troverà davanti al nostro server web e verrà utilizzato come Full Page Cache
soluzione per la nostra installazione Magento.
Installa Varnish tramite yum con il seguente comando:
sudo yum install varnish
Per configurare Magento per l'utilizzo di Varnish esegui:
php /opt/magento/public_html/bin/magento config:set --scope=default --scope-code=0 system/full_page_cache/caching_application 2
Successivamente, dobbiamo generare un file di configurazione di Varnish:
sudo php /opt/magento/public_html/bin/magento varnish:vcl:generate > /etc/varnish/default.vcl
Il comando sopra deve essere eseguito come root o utente con privilegi sudo e creerà un file /etc/varnish/default.vcl
utilizzando i valori predefiniti che sono localhost
come host back-end e porta 8080
come porta di back-end.
La configurazione predefinita include un URL errato per il file di controllo dello stato. Apri il default.vcl
file e rimuovere il /pub
parte dalla linea evidenziata in giallo:
...
.probe = {
# .url = "/pub/health_check.php";
.url = "/health_check.php";
.timeout = 2s;
.interval = 5s;
.window = 10;
.threshold = 5;
}
...
Per impostazione predefinita, Varnish è in ascolto sulla porta 6081
e dobbiamo cambiarlo in 80
:
VARNISH_LISTEN_PORT=80
Una volta terminate le modifiche, avvia e abilita il servizio Varnish:
sudo systemctl enable varnish
sudo systemctl start varnish
Puoi usare il varnishlog
strumento per visualizzare le richieste web in tempo reale e per il debug di Varnish.