Spostare un sito web da un server con Plesk ad un altro minimizzando il downtime

Per spostare un sito web da un server con Plesk ad un altro senza creare disservizi dovuti ai tempi di propagazione dei record DNS si può configurare Nginx sul server sorgente in modo da farlo operare come proxy.
In questo modo le richieste in arrivo sul vecchio server verranno inviate in modo trasparente al nuovo server in attesa che i DNS recepiscano il nuovo IP e consentendo a chi vede ancora il vecchio IP di collegarsi comunque al sito sul nuovo server.

Per poter implementare tale funzionalità è sufficiente variare la direttiva “location /” presente all’interno del file di configurazione del virtualhost relativo a Nginx. es:

/etc/nginx/plesk.conf.d/vhosts/sito-web-da-spostare.conf

Il default dovebbe essere:

location / {
   proxy_pass https://IP_CORRENTE:7081;
   proxy_hide_header upgrade;
   proxy_set_header Host             $host;
   proxy_set_header X-Real-IP        $remote_addr;
   proxy_set_header X-Forwarded-For  $proxy_add_x_forwarded_for;
   access_log off;
}

e va sostituito con:

location / {
   proxy_set_header Host $host;
   proxy_set_header X-Real-IP $remote_addr;
   proxy_pass https://IP_NUOVO_SERVER:443;
}

In questo modo Nginx girerà tutte le richieste al nuovo IP mantenendo l’header Host in modo tale che il nuovo server possa correttamente identificare il virtualhost da servire.

È ovviamente necessario il reload di Nginx per rendere operativa la modifica.

systemctl reload nginx