Nginx Server_Name Direktifi Nedir?
Örneğin, bir web sitenizin hem "example.com" hem de "www.example.com" üzerinden erişilmesini istiyorsanız, aşağıdaki gibi bir konfigürasyon yaparsınız:
server {
listen 80;
server_name example.com www.example.com;
location / {
root /var/www/html;
}
}
Bu konfigürasyon, her iki domain adının da aynı içerikleri göstermesini sağlar.
Server_Name Hatası ile Karşılaştığınızda Neler Olur?
- Web sitenize girmeye çalışırken "404 Not Found" hatası alırsınız.
- Ya da daha yaygın olarak, sitenizin default server olarak yapılandırıldığına dair bir mesajla karşılaşırsınız.
Bu hata, genellikle server_name direktifinizin hatalı bir şekilde yapılandırılmasından kaynaklanır. Server_name yanlış yazılmış olabilir, eksik domain adı olabilir ya da hatalı bir wildcard kullanılmış olabilir. O zaman çözüm yollarını incelemeye başlayalım.
Server_Name Hatası ve Çözüm Yolları
Bazen, server_name direktifinde ufak bir yazım hatası büyük sorunlara yol açabilir. Özellikle domain adları hassas olduğundan, dikkatli olmak gerekir.
Yanlış:
server {
listen 80;
server_name exmaple.com;
...
}
Doğru:
server {
listen 80;
server_name example.com;
...
}
Çözüm: Domain adı doğru yazıldığından emin olun.
# 2. Wildcard (Joker Karakter) Kullanımı
Wildcards kullanarak subdomainlere hizmet vermek istiyorsanız, server_name direktifinde doğru şekilde kullanmalısınız. Örneğin, "example.com" ve alt domainlerine (blog.example.com gibi) hizmet vermek için joker karakter (*) kullanabilirsiniz.
server {
listen 80;
server_name *.example.com;
...
}
Doğru:
server {
listen 80;
server_name *.example.com example.com;
...
}
Çözüm: Wildcard karakterini doğru şekilde kullanmaya dikkat edin.
# 3. Default Server Sorunu
Bir diğer yaygın problem, server_name'e tanımladığınız domainin doğru şekilde yapılandırılmamış olmasıdır. Bu durumda Nginx, default server'ı çalıştırır ve siteniz yanlış sunucuyu gösterir.
server {
listen 80 default_server;
server_name _; # Boş domain adı hatalı
...
}
Doğru:
server {
listen 80 default_server;
server_name example.com;
...
}
Çözüm: Default server’ı sadece gerekli durumlarda kullanın ve doğru server_name belirttiğinizden emin olun.
# 4. Çift server_name Tanımlamaları
Bir başka yaygın hata, aynı domain için iki farklı server bloğu kullanmak olabilir. Bu, Nginx’in hangi konfigürasyonu kullanacağı konusunda karışıklığa yol açar.
server {
listen 80;
server_name example.com;
...
}
server {
listen 80;
server_name example.com;
...
}
Doğru:
server {
listen 80;
server_name example.com www.example.com;
...
}
Çözüm: Aynı domain için birden fazla server bloğunun olmadığından emin olun.
Nginx Konfigürasyonunu Test Etme ve Yeniden Başlatma
sudo nginx -t
Bu komut, konfigürasyon dosyasındaki hataları size bildirir. Eğer her şey doğruysa, Nginx’i yeniden başlatın:
sudo systemctl restart nginx
Artık değişiklikleriniz aktif olacak!