Foruma hoş geldin 👋, Ziyaretçi

Forum içeriğine ve tüm hizmetlerimize erişim sağlamak için foruma kayıt olmalı ya da giriş yapmalısınız. Foruma üye olmak tamamen ücretsizdir.

Nginx'te Basit Bir Bakım Sayfası (Maintenance Page) Yapılandırması ve Trafiği Yönlendirme

codrix

Üye
Katılım
14 Mart 2026
Mesajlar
23
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.

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).

🔧 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.

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.

⚠️ 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.

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.

🔄 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.

Bash:
sudo nginx -t && sudo systemctl reload nginx

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.
 

Tema özelleştirme sistemi

Bu menüden forum temasının bazı alanlarını kendinize özel olarak düzenleye bilirsiniz.

Zevkine göre renk kombinasyonunu belirle

Tam ekran yada dar ekran

Temanızın gövde büyüklüğünü sevkiniz, ihtiyacınıza göre dar yada geniş olarak kulana bilirsiniz.

Geri