Wydanie Remote Sync to kamień milowy dla WP STAGING. Pozwalając użytkownikom synchronizować witryny WordPress między różnymi serwerami, zajmujemy się jedną z najbardziej oczekiwanych funkcji w naszej historii.
Jednak przenoszenie ogromnych ilości danych — czasem przekraczających 30 GB — wiąże się z unikalnymi wyzwaniami po stronie serwera. Jedną z częstych przeszkód jest cache Varnish. Varnish świetnie przyspiesza witrynę, ale podczas dużych transferów danych może być wąskim gardłem.
Contents
Problem: limity bufora Varnish
Gdy Remote Sync startuje, tworzy skompresowany plik Backupu na witrynie źródłowej i pobiera go na witrynę docelową. Jeśli na twoim serwerze działa Varnish, jest on warstwą pośrednią między Nginx a twoją aplikacją.
Varnish często ma domyślny limit rozmiaru obiektów (czasem zaledwie 512 MB). Gdy plik Backupu WP STAGING przekracza ten limit, Varnish zrywa połączenie i synchronizacja kończy się niepowodzeniem. Nawet jeśli „wykluczysz” ścieżkę w panelu, np. CloudPanel, Nginx i tak przekazuje żądanie przez Varnish — i bottleneck pozostaje ten sam.
Rozwiązanie: omijanie Varnish przez vhost
Aby zapewnić stabilny transfer dużych plików Backupu, musisz powiedzieć Nginxowi, by w całości omijał Varnish dla katalogu Backupu WP STAGING. Robi się to przez edycję konfiguracji Virtual Host (vhost) twojej witryny.
1. Ustal ścieżkę Backupu
Domyślny katalog, w którym WP STAGING przechowuje tymczasowe pliki synchronizacji, to: /wp-content/uploads/wp-staging/backups/.
2. Zaktualizuj konfigurację Nginx
Dodaj poniższy snippet do pliku vhosta Nginx. Ta dyrektywa mówi serwerowi, by żądania dla tego konkretnego folderu wysyłać bezpośrednio do backendu (zazwyczaj na porcie 8080), pomijając usługę Varnish (zazwyczaj na porcie 6081) i wyłączając buforowanie.
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;
}
Dlaczego to działa
proxy_passna 8080: kierując bezpośrednio na port backendu, omijamy całkowicie warstwę Varnish.proxy_buffering off: zapobiega temu, by Nginx próbował „zapisać” plik w swoim cache przed jego zwróceniem — co jest kluczowe dla plików powyżej 10 GB.- Modyfikator
^~: gwarantuje, że ta reguła ma pierwszeństwo nad innymi dopasowaniami regex, dzięki czemu wykluczenie jest egzekwowane bezwzględnie.
Alternatywa: tymczasowe wyłączenie
Jeśli nie czujesz się komfortowo z edytowaniem plików vhost, możesz tymczasowo wyłączyć Varnish na serwerze przed rozpoczęciem dużego Remote Sync i włączyć go ponownie po zakończeniu fazy „Restore”. Powyższa metoda z vhost to jednak zalecane rozwiązanie typu „ustaw i zapomnij”.