Merhaba arkadaşlar, bugün sizlere canlı sunucunuzda güncelleme, yedek alma veya kritik bir sorunu giderirken, kullanıcılarınızı profesyonel bir "Bakım Modu" sayfasına yönlendirmenin çok basit ve etkili bir yolunu anlatacağım. Bu yöntemle, kullanıcılarınız 500 hatası yerine anlayışlı bir mesaj görür ve siz de arka planda rahatça çalışabilirsiniz.
Neden Bakım Sayfası Kullanmalıyız?
Sunucu üzerinde çalışma yaparken, uygulamanız (WordPress, özel bir script, e-ticaret sistemi) geçici olarak erişilemez hale gelebilir. Bu durumda kullanıcılar "404 Not Found" veya "502 Bad Gateway" gibi hatalarla karşılaşır. Bu, kullanıcı deneyimini kötü etkiler ve sitenizin güvenilirliğini zedeler. Basit bir bakım sayfası ile bu durumu yönetebilir, hatta bakımın ne zaman biteceğine dair bilgi bile verebilirsiniz. Benim sunucularda özellikle veritabanı yedekleme veya büyük güncelleme öncesi mutlaka devreye aldığım bir yöntem.
1. Adım: Bakım Sayfası Dosyasını Oluşturma
İlk olarak, kullanıcılara göstereceğimiz basit bir HTML sayfası oluşturalım. Bu dosyayı, Nginx'in rahatça okuyabileceği bir yere koyalım. Ben genelde /usr/share/nginx/html/ dizinini kullanıyorum.
İçine aşağıdaki gibi basit, şık ve responsive (mobil uyumlu) bir HTML kodu yapıştırabilirsiniz. İçeriğini kendinize göre düzenleyebilirsiniz.
Dosyayı kaydedip çıkın (Ctrl+X, sonra Y, sonra Enter).
2. Adım: Nginx Konfigürasyonunu Düzenleme
Şimdi, asıl siteyi (örneğin /etc/nginx/sites-available/sitemiz) değil, ana Nginx konfigürasyon dosyasını düzenleyeceğiz. Bu sayede tüm siteleriniz aynı anda bakım moduna girer. Eğer sadece bir site için yapmak isterseniz, o sitenin server (sunucu) bloğunun içine bu kuralları yazabilirsiniz.
Dosyanın içinde `http {` bloğunun içine, diğer `server` bloklarından önce aşağıdaki kodu ekleyin. Bu kod, sunucuya gelen tüm trafiği yakalayıp bakım sayfasına yönlendirecek.
Bu konfigürasyon, 80 portunu dinleyen ve gelen tüm HTTP isteklerini (server_name _; sayesinde) yakalayacak. `root` ve `index` direktifleri ile de kullanıcıyı oluşturduğumuz `maintenance.html` dosyasına yönlendirecek.
Kritik Nokta ve Test
Bu ayarı yaptıktan sonra, diğer tüm `server` bloklarınızın `listen 80;` satırlarının yanında default_server ifadesi OLMAMALIDIR. Çünkü bu etiketi artık bizim bakım sunucumuz kullanıyor. Eski sitenizin konfigürasyonunda varsa kaldırın.
Şimdi Nginx konfigürasyonunu test edip servisi yeniden başlatalım.
Eğer "syntax is ok" ve "test is successful" mesajlarını görürseniz, sorun yok demektir.
DİKKAT: `reload` komutu, mevcut bağlantıları kesmeden yeni konfigürasyonu yükler. `restart` yapmanıza gerek yok. Şimdi tarayıcınızdan sunucunuzun IP adresine veya domainine gittiğinizde, artık bakım sayfasını görmeniz gerekiyor.
Bakım Modundan Çıkma
İşiniz bittiğinde, bakım modundan çıkmak çok basit. Sadece /etc/nginx/nginx.conf dosyasına eklediğimiz o ek `server { ... }` bloğunu yorum satırına alın veya silin. Ardından konfigürasyonu tekrar test edip Nginx'i reload edin.
Ve işte bu kadar! Artık sunucunuz eski haline döndü.
Son Sözler
Bu yöntem, acil durumlar için hazırda bekleyen çok pratik bir çözümdür. Hatta biraz daha geliştirip, bakım sayfasını açıp kapamak için bir bash scripti bile yazabilirsiniz. Benzer bir yapıyı 503 Service Unavailable durum kodu döndürerek de yapabilirsiniz, bu SEO için daha doğru olur. Ancak bu anlattığım yöntem hem hızlı hem de oldukça etkilidir.
Peki siz bakım moduna alırken hangi yöntemleri kullanıyorsunuz? IP bazlı erişim iznini nasıl yapılandırıyorsunuz? Bu konuda soruları olan veya eklemek istedikleri olan arkadaşlar aşağıya yazsın, beraber tartışalım.
Sunucu üzerinde çalışma yaparken, uygulamanız (WordPress, özel bir script, e-ticaret sistemi) geçici olarak erişilemez hale gelebilir. Bu durumda kullanıcılar "404 Not Found" veya "502 Bad Gateway" gibi hatalarla karşılaşır. Bu, kullanıcı deneyimini kötü etkiler ve sitenizin güvenilirliğini zedeler. Basit bir bakım sayfası ile bu durumu yönetebilir, hatta bakımın ne zaman biteceğine dair bilgi bile verebilirsiniz. Benim sunucularda özellikle veritabanı yedekleme veya büyük güncelleme öncesi mutlaka devreye aldığım bir yöntem.
İlk olarak, kullanıcılara göstereceğimiz basit bir HTML sayfası oluşturalım. Bu dosyayı, Nginx'in rahatça okuyabileceği bir yere koyalım. Ben genelde /usr/share/nginx/html/ dizinini kullanıyorum.
Bash:
sudo nano /usr/share/nginx/html/maintenance.html
İçine aşağıdaki gibi basit, şık ve responsive (mobil uyumlu) bir HTML kodu yapıştırabilirsiniz. İçeriğini kendinize göre düzenleyebilirsiniz.
HTML:
<!DOCTYPE html>
<html lang="tr">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Site Bakımda - bingunluk.com</title>
<style>
body { text-align: center; padding: 100px; font-family: Arial, sans-serif; background: #f4f4f4; color: #333; }
.container { max-width: 600px; margin: auto; background: white; padding: 40px; border-radius: 10px; box-shadow: 0 5px 15px rgba(0,0,0,0.1); }
h1 { color: #e74c3c; }
p { line-height: 1.6; font-size: 18px; }
.emoji { font-size: 60px; margin-bottom: 20px; }
</style>
</head>
<body>
<div class="container">
<div class="emoji">🔧</div>
<h1>Teknik Bakım Çalışması</h1>
<p>Sitemizde şu anda planlı bir teknik bakım çalışması yapılmaktadır. Bu çalışma, size daha iyi hizmet verebilmek için gereklidir.</p>
<p>Lütfen biraz sonra tekrar deneyiniz. Anlayışınız için teşekkür ederiz.</p>
<hr>
<p><small><strong>bingunluk.com Ekibi</strong></small></p>
</div>
</body>
</html>
Dosyayı kaydedip çıkın (Ctrl+X, sonra Y, sonra Enter).
Şimdi, asıl siteyi (örneğin /etc/nginx/sites-available/sitemiz) değil, ana Nginx konfigürasyon dosyasını düzenleyeceğiz. Bu sayede tüm siteleriniz aynı anda bakım moduna girer. Eğer sadece bir site için yapmak isterseniz, o sitenin server (sunucu) bloğunun içine bu kuralları yazabilirsiniz.
Bash:
sudo nano /etc/nginx/nginx.conf
Dosyanın içinde `http {` bloğunun içine, diğer `server` bloklarından önce aşağıdaki kodu ekleyin. Bu kod, sunucuya gelen tüm trafiği yakalayıp bakım sayfasına yönlendirecek.
NGINX:
# Tüm Trafiği Bakım Sayfasına Yönlendirme
server {
listen 80 default_server;
listen [::]:80 default_server;
server_name _; # Tüm sunucu isimlerini yakala
root /usr/share/nginx/html; # Bakım sayfasının olduğu dizin
index maintenance.html; # Varsayılan dosya
location / {
try_files $uri $uri/ /maintenance.html;
# ÖNEMLİ: Eğer bakım sayfası dışında bir dosyaya (logo vs.) ihtiyacınız varsa,
# bu satırın üstüne bir location bloğu ekleyerek o dosyalara erişime izin verebilirsiniz.
# Örnek: location /images/ { allow all; }
}
# Yönetici IP'si için istisna (OPSİYONEL - Çok Önemli!)
# Aşağıdaki 'allow' satırına kendi IP'nizi yazın, diğer tüm IP'leri engelleyin.
# location /admin/ {
# allow 88.255.100.50; # Kendi Sabit IP'niz
# deny all;
# proxy_pass http://localhost:8080; # Uygulamanızın asıl adresi
# }
}
Bu konfigürasyon, 80 portunu dinleyen ve gelen tüm HTTP isteklerini (server_name _; sayesinde) yakalayacak. `root` ve `index` direktifleri ile de kullanıcıyı oluşturduğumuz `maintenance.html` dosyasına yönlendirecek.
Bu ayarı yaptıktan sonra, diğer tüm `server` bloklarınızın `listen 80;` satırlarının yanında default_server ifadesi OLMAMALIDIR. Çünkü bu etiketi artık bizim bakım sunucumuz kullanıyor. Eski sitenizin konfigürasyonunda varsa kaldırın.
Şimdi Nginx konfigürasyonunu test edip servisi yeniden başlatalım.
Bash:
sudo nginx -t
Eğer "syntax is ok" ve "test is successful" mesajlarını görürseniz, sorun yok demektir.
Bash:
sudo systemctl reload nginx # veya sudo service nginx reload
DİKKAT: `reload` komutu, mevcut bağlantıları kesmeden yeni konfigürasyonu yükler. `restart` yapmanıza gerek yok. Şimdi tarayıcınızdan sunucunuzun IP adresine veya domainine gittiğinizde, artık bakım sayfasını görmeniz gerekiyor.
İşiniz bittiğinde, bakım modundan çıkmak çok basit. Sadece /etc/nginx/nginx.conf dosyasına eklediğimiz o ek `server { ... }` bloğunu yorum satırına alın veya silin. Ardından konfigürasyonu tekrar test edip Nginx'i reload edin.
Bash:
sudo nginx -t && sudo systemctl reload nginx
Ve işte bu kadar! Artık sunucunuz eski haline döndü.
Bu yöntem, acil durumlar için hazırda bekleyen çok pratik bir çözümdür. Hatta biraz daha geliştirip, bakım sayfasını açıp kapamak için bir bash scripti bile yazabilirsiniz. Benzer bir yapıyı 503 Service Unavailable durum kodu döndürerek de yapabilirsiniz, bu SEO için daha doğru olur. Ancak bu anlattığım yöntem hem hızlı hem de oldukça etkilidir.
Peki siz bakım moduna alırken hangi yöntemleri kullanıyorsunuz? IP bazlı erişim iznini nasıl yapılandırıyorsunuz? Bu konuda soruları olan veya eklemek istedikleri olan arkadaşlar aşağıya yazsın, beraber tartışalım.