Diciamo che sto usando Nginx come mio server web. So che Nginx gestisce il comando -s reload
che ricarica la configurazione quando viene cambiata, ma aspetta che le richieste correnti finiscano prima che cicli i processi di lavoro per usare la nuova configurazione, quindi evviva, nessun tempo di inattività!
Ma per quanto riguarda la modifica dei file effettivi?
Per esempio, diciamo che ho un index.html
e ho realizzato che c'è un errore di battitura nella mia pagina. Diciamo anche che è una pagina molto attiva (come StackOverflow, per esempio) e voglio correggere il mio errore di battitura.
Se devo solo modificare il file con un editor di testo o aggiornarlo con rsync
o scp
o qualcosa del genere, è possibile che una richiesta venga cancellata?
Ad esempio, supponiamo di essere in esecuzione su una macchina multicore e che la richiesta arrivi dal client attraverso Nginx per caricare index.html
, e nello stesso tempo i dati cominciano a venire da me per aggiornare index.html
.
C'è qualche tipo di circostanza in cui il cliente ottiene solo un file parzialmente finito? O un file che contiene vecchi dati presenti sul disco nella posizione di quel nuovo file?
O ci sono alcuni tipi di garanzia su ciò che non sta accadendo. Capisco che la probabilità che tali eventi effettivamente stiano accadendo è piuttosto ridotta, ma qual è il metodo più semplice che garantisce sia l'uptime che l'accesso solo ai file corretti?