Remote Sync のリリースは、WP STAGING にとってマイルストーンです。異なるサーバー間で WordPress サイトを同期できるようにすることで、当社の歴史上最も要望の多かった機能の 1 つに取り組んでいます。
しかし、時には 30 GB を超えるような大量のデータを移動することは、独特のサーバー側の課題をもたらします。よくあるハードルの 1 つが Varnish Cache です。Varnish はサイトを高速化するのに優れていますが、大量データ転送時にはボトルネックとなり得ます。
問題: Varnish のバッファ制限
Remote Sync が開始されると、ソースサイトに圧縮された Backup ファイルが作成され、移行先にダウンロードされます。サーバーで Varnish が有効な場合、Nginx とアプリケーションの間に位置します。
Varnish にはオブジェクトサイズのデフォルト制限があることが多く (場合によっては 512MB と低い)、WP STAGING の Backup ファイルがこの制限を超えると、Varnish は接続を終了し、同期が失敗します。CloudPanel のようなコントロールパネルでパスを「除外」しても、Nginx は依然としてリクエストを Varnish 経由でプロキシするため、同じボトルネックにつながります。
解決策: Vhost 経由で Varnish を回避する
大きな Backup ファイルの安定した転送を保証するには、Nginx に WP STAGING の Backup ディレクトリに対して Varnish を完全に回避するよう指示する必要があります。これはサイトの Virtual Host (vhost) 構成を編集することで行います。
1. Backup パスを特定する
WP STAGING が一時的な同期ファイルを保存するデフォルトのディレクトリは次のとおりです: /wp-content/uploads/wp-staging/backups/
2. Nginx 設定を更新する
Nginx vhost ファイルに以下のスニペットを追加してください。このディレクティブは、この特定のフォルダへのリクエストを Varnish サービス (通常はポート 6081) をスキップして直接バックエンド (通常はポート 8080) に送信し、バッファリングを無効化するようサーバーに指示します。
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;
}
なぜこれが機能するのか
proxy_passを 8080 に: バックエンドポートを直接指すことで、Varnish レイヤーを完全に回避します。proxy_buffering off: これにより、Nginx がファイルを提供する前に独自のキャッシュに「保存」しようとするのを防ぎます。10GB 以上のファイルには必須です。^~修飾子: このルールが他の正規表現マッチよりも優先されるようにし、除外が厳密に適用されることを保証します。
代替策: 一時的に無効化する
vhost ファイルの編集に不安がある場合、大規模な Remote Sync を開始する前にサーバー上で Varnish を一時的に無効化し、「Restore」フェーズが完了したら再度有効化できます。ただし、上記の vhost 方式が推奨される「設定して忘れる」解決策です。