NGINX’in başlamaması çoğunlukla bozuk yapılandırma, eksik include/sertifika dosyası, bilinmeyen direktif veya 80/443 port çakışmasından kaynaklanır. En güvenli yöntem servisi körlemesine restart etmek değil, nginx -t ve systemd loguyla ilk gerçek hatayı düzeltmektir.
nginx: [emerg] unexpected "}" in /etc/nginx/conf.d/example.conf:42
nginx: configuration file /etc/nginx/nginx.conf test failed
nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)
NGINX başlangıçta tüm yapılandırmayı okur, sözdizimini ve başvurulan dosyaları açılabilirlik açısından kontrol eder. Tek bir hatalı include, sertifika yolu veya port çakışması servisin başlamasını engelleyebilir.
nginx -t ilk yapılması gereken komuttur. Çıktı dosya ve satır numarası veriyorsa önce yalnız o ilk hata düzeltilmelidir; sonraki hatalar zincirleme olabilir.
Reload sırasında yeni config geçersizse çalışan eski worker’lar çoğu durumda hizmet vermeye devam eder. Buna karşılık doğrudan restart, çalışan servisi durdurup yeniden başlatamadığında kesinti yaratabilir.
Address already in use hatasında portu hangi process’in kullandığı bulunmalıdır. Apache, başka NGINX instance’ı, container proxy veya eski master process 80/443 portunu tutuyor olabilir.
Unknown directive, ilgili modülün kurulmadığını ya da direktifin yanlış bağlam/sürümde kullanıldığını gösterir. Satırı silmeden önce modül bağımlılığı doğrulanmalıdır.
Production sunucuda önce nginx -t, sonra reload kullanın; geçersiz config varken restart etmek çalışan eski yapılandırmayı da kaybetmenize yol açabilir.
E-postada, tarayıcıda veya SSH günlüğünde gördüğünüz ifadeyi aratın. Her kartta anlam, muhtemel neden ve güvenli ilk işlem bulunur.
Anlamı: Yapılandırma testi en az bir kritik hata buldu.
Muhtemel neden: Syntax, include, dosya yolu veya yönerge hatası.
Anlamı: Blok parantezi veya noktalı virgül yapısı bozuk.
Muhtemel neden: Eksik/fazla süslü parantez veya semicolon.
Anlamı: NGINX direktifi tanımıyor.
Muhtemel neden: Yazım hatası, eksik modül veya desteklenmeyen build.
Anlamı: Port başka process tarafından kullanılıyor.
Muhtemel neden: Apache, ikinci NGINX, container veya eski process.
Anlamı: Aynı adres/port için uyumsuz veya tekrarlı listen seçenekleri var.
Muhtemel neden: Birden fazla include/vhost aynı listen tanımını çakıştırıyor.
Anlamı: Aynı address:port için birden fazla default_server tanımlı.
Muhtemel neden: Kopya site config veya dağıtım paketi varsayılanı.
Anlamı: SSL dosya yolu yok veya okunamıyor.
Muhtemel neden: Yenileme/deploy sonrası yanlış path veya izin.
Anlamı: Include edilen config dosyası bulunamadı/açılamadı.
Muhtemel neden: Silinen symlink, yanlış glob veya izin.
Bu ifadeyle eşleşen kayıt bulunamadı.
Komutlar root erişimi içindir. Önce yalnızca durum ve log toplayın; nedeni görmeden kalıcı ayar değiştirmeyin.
nginx -t
İlk gerçek dosya ve satır hatasını gösterir.
nginx -T > /tmp/nginx-tam.conf 2>&1
less /tmp/nginx-tam.conf
Include edilmiş birleşik config’i görüntüler.
systemctl status nginx -l --no-pager
journalctl -u nginx -n 150 --no-pager
systemd başlangıç ve restart hatalarını gösterir.
ss -lntp '( sport = :80 or sport = :443 )'
lsof -nP -iTCP:80 -sTCP:LISTEN 2>/dev/null
80/443 portlarını kullanan processleri belirler.
nginx -V 2>&1
Sürüm, compile flags ve dinamik modül desteğini gösterir.
nginx -t && systemctl reload nginx
Yalnız başarılı config’i kesintisiz uygular.
NGINX hatasının temel nedeni aynı olsa da paket yolları, servis adları, güvenlik katmanları ve sanal host yönetimi kullanılan Linux dağıtımına veya Plesk altyapısına göre değişir.
NGINX Başlamıyor için systemd, paket yolu ve journald kontrolleri.
nginx -t
systemctl status nginx -l --no-pager
journalctl -u nginx -n 100 --no-pager
ss -lntp | grep -E ':80 |:443 'NGINX Başlamıyor için SELinux, PHP-FPM pool ve RHEL tabanlı servis kontrolleri.
nginx -t
systemctl status nginx -l --no-pager
journalctl -u nginx -n 100 --no-pager
ss -lntp | grep -E ':80 |:443 'Plesk tarafından üretilen NGINX sanal host dosyalarında nginx başlamıyor kontrolü.
nginx -t
plesk repair web -n
systemctl status nginx sw-cp-server --no-pagerÇalışan servisi koruyarak önce test hatasını, sonra port/dosya/modül bağımlılığını düzeltin.
Hata upgrade, sertifika, yeni vhost veya manuel düzenleme sonrası mı başladı belirleyin.
systemctl status nginx -l --no-pagerYalnız ilk [emerg] mesajındaki dosya ve satıra odaklanın.
nginx -tKopya include ve farklı dosyadan gelen listen/rewrite satırlarını bulun.
nginx -T > /tmp/nginx-tam.conf 2>&180/443 sahibi, SSL dosyaları ve include hedeflerini kontrol edin.
ss -lntp | grep -E ':80 |:443 '; find /etc/nginx -xtype l -lsDosyayı yedekleyip yalnız hatalı satır/blok üzerinde değişiklik yapın.
cp -a /etc/nginx/conf.d/example.conf /root/example.conf.yedekConfig başarılıysa reload edin; journal ve HTTP yanıtını izleyin.
nginx -t && systemctl reload nginx
systemctl is-active nginxSatır numarasından önceki blok ve noktalı virgüller kontrol edilir.
nl -ba /etc/nginx/conf.d/example.conf | sed -n '30,50p'Apache, container proxy veya ikinci instance portu tutuyor olabilir.
ss -lntp '( sport = :80 )'Fullchain/key path, izin ve eşleşme kontrol edilir.
nginx -t; ls -l /etc/letsencrypt/live/example.com/Gerekli modül build içinde yok veya dinamik modül yüklenmemiş olabilir.
nginx -V 2>&1; grep -R 'load_module' /etc/nginxKopya enabled site veya iki include aynı dosyayı yükleyebilir.
nginx -T | grep -n 'default_server'Elle ek direktif ve template uyumluluğu kontrol edilip repair dry-run yapılır.
plesk repair web -n; nginx -tnginx -t çıktısındaki ilk emerg mesajının dosya ve satırını düzeltin; ardından test başarılı olmadan restart yapmayın.
Dinlemek istediği portu başka process kullanıyor demektir. ss veya lsof ile port sahibi bulunmalıdır.
Reload yeni config’i test edip worker’ları kontrollü yeniler; restart servisi tamamen durdurup başlatır ve hata varsa kesinti riski taşır.
Direktif yanlış yazılmış, yanlış bağlamda, eski sürümde veya gerekli modül olmadan kullanılmış olabilir.
Uyumsuz listen seçenekleri config testini veya vhost davranışını bozabilir; aynı adres/port tanımları birleştirilmelidir.
Evet. ssl_certificate veya key dosyası açılamazsa ilgili SSL server bloğu config testini başarısız kılabilir.
Önce nginx -t ve plesk repair web -n ile dry-run yapılmalı; sonra yalnız gerekli domain veya tüm web config kontrollü onarılmalıdır.
cPanel, WHM, CloudLinux, LiteSpeed, MariaDB, Exim ve güvenlik katmanlarını birlikte analiz ederek yalnızca servisi kaldırmak yerine arızanın temel nedenini gideriyoruz.