Il rilascio di Remote Sync è una pietra miliare per WP STAGING. Consentendo agli utenti di sincronizzare siti WordPress tra server diversi, stiamo affrontando una delle funzionalità più richieste nella nostra storia.
Tuttavia, spostare enormi quantità di dati – a volte superiori a 30 GB – introduce sfide uniche lato server. Un ostacolo comune è la Varnish Cache. Sebbene Varnish sia eccellente per velocizzare il tuo sito, può fare da “collo di bottiglia” durante trasferimenti di dati pesanti.
Contents
Il problema: i limiti del buffer di Varnish
Quando Remote Sync si avvia, crea un file di Backup compresso sul sito sorgente e lo scarica sulla destinazione. Se Varnish è attivo sul tuo server, si trova tra Nginx e la tua applicazione.
Varnish ha spesso un limite predefinito per le dimensioni degli oggetti (a volte basso quanto 512MB). Quando il file di Backup di WP STAGING supera questo limite, Varnish termina la connessione, causando il fallimento della sincronizzazione. Anche se “escludi” il percorso in un pannello di controllo come CloudPanel, Nginx instrada comunque la richiesta tramite Varnish, portando allo stesso collo di bottiglia.
La soluzione: bypassare Varnish tramite vhost
Per garantire un trasferimento stabile di file di Backup di grandi dimensioni, devi dire a Nginx di bypassare Varnish completamente per la directory dei Backup di WP STAGING. Questo si fa modificando la configurazione Virtual Host (vhost) del tuo sito.
1. Identifica il percorso del Backup
La directory predefinita in cui WP STAGING memorizza i file di sincronizzazione temporanei è: /wp-content/uploads/wp-staging/backups/
2. Aggiorna la tua configurazione Nginx
Aggiungi il seguente snippet al tuo file vhost di Nginx. Questa direttiva dice al server di inviare le richieste per questa cartella specifica direttamente al backend (di solito sulla porta 8080), saltando il servizio Varnish (di solito sulla porta 6081) e disattivando il buffering.
Nginx
# Large WP STAGING backup files - BYPASS VARNISH
location ^~ /wp-content/uploads/wp-staging/backups/ {
proxy_pass http://127.0.0.1:8080;
proxy_buffering off;
proxy_request_buffering off;
proxy_set_header Host $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 $scheme;
add_header Cache-Control "private, no-store" always;
}
Perché funziona
proxy_passalla 8080: puntando direttamente alla porta del backend, evitiamo completamente il livello Varnish.proxy_buffering off: impedisce a Nginx di provare a “salvare” il file nella propria cache prima di servirlo, il che è essenziale per file da 10GB+.- Modificatore
^~: garantisce che questa regola abbia priorità su altre corrispondenze di espressioni regolari, assicurandosi che l’esclusione venga applicata rigorosamente.
Alternativa: disattivazione temporanea
Se non ti senti a tuo agio a modificare i file vhost, puoi disattivare temporaneamente Varnish sul tuo server prima di avviare una grande Remote Sync e riattivarlo una volta completata la fase “Restore”. Tuttavia, il metodo vhost sopra è la soluzione consigliata “set and forget”.