Bir gün sabah işe başladığınızda, Nginx sunucunuzda yeni bir yapılandırma yaptığınızda veya SSL sertifikalarını güncellediğinizde, karşınıza çıkan o sinir bozucu hatayı fark ettiniz mi? Evet, doğru tahmin ettiniz: "Server Name Mismatch" hatası. Bu hata, çoğu zaman basit bir yapılandırma hatası nedeniyle meydana gelir, ama etkisi büyük olabilir. Peki, bu hatayı nasıl çözeceksiniz? Gelin, adım adım çözüme nasıl ulaşacağımıza bakalım.
Server Name Mismatch Hatası Nedir?
“Server Name Mismatch” hatası, Nginx sunucusunda SSL yapılandırmasında bir uyuşmazlık olduğunda ortaya çıkar. SSL sertifikaları, belirli bir domain adı için geçerlidir. Eğer Nginx sunucusu, gelen istek ile uyumsuz bir domain adı için SSL sertifikasını kullanmaya çalışırsa, bu hata meydana gelir. Örneğin, bir kullanıcı “https://www.ornek.com” adresine giderken, sunucunuz “ornek.net” için bir sertifika kullanıyorsa, SSL bağlantısı kurulamaz ve bu hata meydana gelir.
Hata Neden Ortaya Çıkar?
Bu hata genellikle şu sebeplerden kaynaklanır:
1.
Yanlış Server Name Kullanımı: Sunucunuz, gelen istekteki domain adı ile uyumlu olmayan bir domain adı için SSL sertifikası kullanmaya çalışıyor olabilir.
2.
Yanlış SSL Sertifikası: SSL sertifikası doğru şekilde yüklenmemiş veya hatalı bir şekilde yapılandırılmış olabilir.
3.
Vhost Yapılandırma Hataları: Nginx sunucusunda her domain için doğru vhost (virtual host) ayarlarının yapılmamış olması.
Şimdi, bu hatanın nasıl çözülebileceğine dair bazı adımları inceleyelim.
Adım 1: Server Name Direktifini Kontrol Etme
İlk olarak, Nginx yapılandırma dosyanızda doğru `server_name` direktifini kullanıp kullanmadığınızı kontrol etmelisiniz. Eğer doğru domain adı belirtilmemişse, bu hata kaçınılmaz olacaktır.
Nginx konfigürasyon dosyanızda şu şekilde bir kontrol yapın:
server {
listen 443 ssl;
server_name www.ornek.com;
ssl_certificate /etc/nginx/ssl/ornek.com.crt;
ssl_certificate_key /etc/nginx/ssl/ornek.com.key;
# Diğer yapılandırmalar
}
Burada, `server_name` direktifinin doğru domain adı ile eşleştiğinden emin olun. Eğer farklı bir domain için sertifika kullanıyorsanız, burada da doğru domain adı olmalıdır.
Adım 2: SSL Sertifikalarını Yeniden Kontrol Etme
Yapılandırmanızda doğru SSL sertifikasını kullanmak da oldukça önemlidir. İlgili sertifikanın doğru bir şekilde yüklendiğini ve `ssl_certificate` ile `ssl_certificate_key` satırlarının doğru dosyaları işaret ettiğinden emin olun. Yanlış bir sertifika, bu hatayı almanıza neden olabilir.
SSL sertifikalarınız şu şekilde kontrol edilebilir:
ssl_certificate /etc/nginx/ssl/ornek.com.crt;
ssl_certificate_key /etc/nginx/ssl/ornek.com.key;
Sertifikaların doğru dosyaları işaret ettiğinden emin olun. Eğer sertifikalarınızı güncellediyseniz, Nginx'i yeniden başlatmayı unutmayın.
Adım 3: `server_name` İle İlgili Diğer Yapılandırmaları Kontrol Etme
Nginx, birden fazla domain adı için yapılandırma yapılmasına olanak sağlar. Eğer birden fazla domain adı için SSL yapılandırması yapıyorsanız, her domain için ayrı bir `server_name` direktifi olmalıdır. Aksi halde, gelen istek doğru yapılandırmaya yönlendirilmez ve bu hata tekrar meydana gelir.
Örnek olarak:
server {
listen 443 ssl;
server_name www.ornek.com ornek.com;
ssl_certificate /etc/nginx/ssl/ornek.com.crt;
ssl_certificate_key /etc/nginx/ssl/ornek.com.key;
# Diğer yapılandırmalar
}
Adım 4: Nginx’i Yeniden Başlatma
Yapılandırma dosyanızda gerekli değişiklikleri yaptıktan sonra, Nginx’i yeniden başlatmanız gerekir. Bunu yapmak için şu komutu kullanabilirsiniz:
sudo systemctl restart nginx
Nginx’in doğru şekilde çalıştığını ve hatanın çözülüp çözülmediğini kontrol edin.
Sonuç
Eğer yukarıdaki adımları dikkatlice takip ederseniz, Nginx’te karşılaştığınız “Server Name Mismatch” hatasını rahatça çözebilirsiniz. Bu tür hatalar, genellikle basit yapılandırma hatalarından kaynaklanır, ancak dikkatli bir şekilde kontrol ettiğinizde kolayca düzeltebilirsiniz. Unutmayın, SSL sertifikalarınız her zaman doğru domain adı ile uyumlu olmalıdır. Eğer hata devam ederse, daha detaylı bir inceleme yapmanız gerekebilir.