O lançamento do Remote Sync é um marco para o WP STAGING. Ao permitir aos utilizadores sincronizar sites WordPress entre diferentes servidores, estamos a responder a uma das funcionalidades mais pedidas da nossa história.
No entanto, mover quantidades massivas de dados – às vezes excedendo 30 GB – introduz desafios únicos do lado do servidor. Um obstáculo comum é a Cache Varnish. Embora o Varnish seja excelente para acelerar o teu site, pode atuar como um “gargalo” durante transferências de grandes quantidades de dados.
Contents
O problema: limites de buffer do Varnish
Quando o Remote Sync arranca, cria um ficheiro de Backup comprimido no site de origem e transfere-o para o destino. Se o Varnish estiver ativo no teu servidor, fica entre o Nginx e a tua aplicação.
O Varnish tem frequentemente um limite por defeito para tamanhos de objeto (às vezes tão baixo como 512MB). Quando o ficheiro de Backup do WP STAGING excede este limite, o Varnish termina a ligação, fazendo a sincronização falhar. Mesmo que “excluas” o caminho num painel de controlo como o CloudPanel, o Nginx continua a encaminhar o pedido através do Varnish, levando ao mesmo gargalo.
A solução: contornar o Varnish via vhost
Para garantir uma transferência estável de grandes ficheiros de Backup, tens de dizer ao Nginx para contornar completamente o Varnish para a pasta de Backups do WP STAGING. Isto faz-se editando a configuração do Virtual Host (vhost) do teu site.
1. Identifica o caminho do Backup
A pasta padrão onde o WP STAGING guarda os ficheiros temporários de sincronização é: /wp-content/uploads/wp-staging/backups/
2. Atualiza a tua configuração do Nginx
Adiciona o seguinte snippet ao teu ficheiro vhost do Nginx. Esta diretiva diz ao servidor para enviar os pedidos desta pasta específica diretamente para o backend (geralmente na porta 8080), saltando o serviço Varnish (geralmente na porta 6081) e desativando o 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;
}
Porque é que isto funciona
proxy_passpara 8080: Ao apontar diretamente para a porta do backend, evitamos totalmente a camada Varnish.proxy_buffering off: Isto impede o Nginx de tentar “guardar” o ficheiro na sua própria cache antes de o servir, o que é essencial para ficheiros de 10GB ou mais.- Modificador
^~: Isto garante que esta regra tem prioridade sobre outros padrões com expressões regulares, assegurando que a exclusão é estritamente aplicada.
Alternativa: desativação temporária
Se não te sentes à vontade a editar ficheiros vhost, podes desativar temporariamente o Varnish no teu servidor antes de iniciar um Remote Sync grande e reativá-lo assim que a fase de “Restore” estiver concluída. No entanto, o método vhost acima é a solução recomendada de “configurar e esquecer”.