200 döndüren bir bakım sayfası, arama motorlarına sitenizin tamamının artık "birazdan döneceğiz" yazan bir sayfa olduğunu söyler; onlar da bunu dizine ekler. Doğru yanıt, Retry-After başlığıyla gelen 503'tür: geçici olarak erişilemez, daha sonra gelin — ve hiçbir maliyeti yoktur.
Nginx
server {
# ...
if (-f /var/www/site/maintenance.on) {
return 503;
}
error_page 503 @maintenance;
location @maintenance {
root /var/www/site/public;
rewrite ^ /maintenance.html break;
add_header Retry-After 3600 always;
}
}
sudo touch /var/www/site/maintenance.on # on
sudo rm /var/www/site/maintenance.on # off
Dosyaya dayalı bir anahtar demek, yeniden yükleme yok, yapılandırma değişikliği yok, ve bir dağıtım betiğinden çevrilebilir demektir.
Kendinizi içeri alın
set $maint 0;
if (-f /var/www/site/maintenance.on) { set $maint 1; }
if ($remote_addr = 203.0.113.42) { set $maint 0; }
if ($maint = 1) { return 503; }
Bir muafiyet olmadan, dağıttığınız düzeltmeyi sınayamazsınız; alışılmış tepki de site hâlâ bozukken bakım kipini kapatmak olur. Kendi adresinizi, ona ihtiyaç duymadan önce oraya yazın.
Sayfada ne yazmalı
- Bunun planlı olduğu ve sitenin ne zaman döneceği — "birazdan" değil, gerçek bir saat.
- Size ulaşmanın, siteye bağlı olmayan bir yolu.
- Uygulamaya hiçbir bağımlılık olmasın: içine CSS gömülmüş duruk bir dosya.
Denetleyin
curl -sSI https://yourdomain.com/ | grep -E '^HTTP|retry-after'
# HTTP/2 503
# retry-after: 3600
Saniyeler süren bir dağıtım için bakım kipini hiç kullanmayın: yeni bir dizine kurun ve bir sembolik bağı çevirin. Kimse hiçbir şey görmez — bkz. Bölünmez bir geçişle dağıtım.