format_list_bulletedBu İçerikte Bahsedilen Konular
- arrow_rightNginx Virtual Hosts Nedir ve Neden Kullanılır?
- arrow_rightÇoklu Site Barındırma için Ön Gereksinimler
- arrow_rightAdım Adım Nginx Virtual Host Yapılandırması
- arrow_right1. Adım: Nginx Kurulumu
- arrow_right2. Adım: Dizin Yapısını Oluşturma
- arrow_right3. Adım: Virtual Host Yapılandırma Dosyaları Oluşturma
- arrow_right4. Adım: Sembolik Link Oluşturma
- arrow_right5. Adım: Nginx Yapılandırmasını Test Etme
- arrow_rightNginx vs Apache: Performans Karşılaştırması
- arrow_rightSSL/TLS Sertifikası ile Güvenli Yapılandırma
- arrow_rightYaygın Hatalar ve Çözümleri
- arrow_right403 Forbidden Hatası
- arrow_rightPort Çakışması
- arrow_right"Welcome to Nginx" Sayfası Görünüyor
- arrow_rightProduction İçin En İyi Uygulamalar
- arrow_rightSonuç
Nginx Virtual Hosts Nedir ve Neden Kullanılır?
Nginx virtual host özelliği, tek bir sunucu üzerinde birden fazla web sitesini bağımsız olarak barındırmanızı sağlayan bir yapılandırma sistemidir. Bu mimari, sunucu kaynaklarının verimli kullanılmasını sağlar ve maliyetleri önemli ölçüde düşürür.
NGINX Inc. tarafından yayınlanan resmi belgelere göre, Nginx'in event-driven mimarisi Apache'ye kıyasla eşzamanlı bağlantıları çok daha verimli şekilde yönetir. NetCraft'ın 2024 verilerine göre, dünya genelindeki aktif web sunucularının yaklaşık %34'ü Nginx kullanmaktadır.
Çoklu Site Barındırma için Ön Gereksinimler
Yapılandırmaya başlamadan önce aşağıdaki gereksinimleri karşılamanız gerekir:
- Ubuntu 20.04/22.04 veya CentOS/Rocky Linux tabanlı bir sunucu
- Root veya sudo yetkili bir kullanıcı hesabı
- Temel Linux komut satırı bilgisi
- En az 2GB RAM önerilir (1GB minimum)
- Açık port: 80 (HTTP) ve 443 (HTTPS)
Sunucu güvenliği için RKHunter ve Lynis ile sunucu güvenlik denetimi yapmanızı öneriyoruz.
Adım Adım Nginx Virtual Host Yapılandırması
1. Adım: Nginx Kurulumu
Öncelikle sistem paketlerini güncelleyip Nginx'i kuralım:
sudo apt update
sudo apt install nginx -y
sudo systemctl start nginx
sudo systemctl enable nginx
Kurulumdan sonra varsayılan sayfanın görüntülenip görüntülenmediğini kontrol edin:
curl -I http://localhost
2. Adım: Dizin Yapısını Oluşturma
Her site için ayrı bir dizin oluşturmak, dosya organizasyonunu kolaylaştırır:
sudo mkdir -p /var/www/alanadi1.com/public_html
sudo mkdir -p /var/www/alanadi2.com/public_html
sudo chown -R $USER:$USER /var/www/alanadi1.com/public_html
sudo chown -R $USER:$USER /var/www/alanadi2.com/public_html
sudo chmod -R 755 /var/www
3. Adım: Virtual Host Yapılandırma Dosyaları Oluşturma
Nginx yapılandırma dosyaları /etc/nginx/sites-available/ dizininde oluşturulur ve /etc/nginx/sites-enabled/ dizinine sembolik link verilir:
sudo nano /etc/nginx/sites-available/alanadi1.com
Aşağıdaki yapılandırmayı ekleyin:
server {
listen 80;
listen [::]:80;
server_name alanadi1.com www.alanadi1.com;
root /var/www/alanadi1.com/public_html;
index index.html index.htm;
location / {
try_files $uri $uri/ =404;
}
access_log /var/log/nginx/alanadi1.com_access.log;
error_log /var/log/nginx/alanadi1.com_error.log;
}
İkinci site için de benzer bir yapılandırma oluşturun:
sudo nano /etc/nginx/sites-available/alanadi2.com
4. Adım: Sembolik Link Oluşturma
Yapılandırma dosyalarını etkinleştirmek için sembolik link oluşturun:
sudo ln -s /etc/nginx/sites-available/alanadi1.com /etc/nginx/sites-enabled/
sudo ln -s /etc/nginx/sites-available/alanadi2.com /etc/nginx/sites-enabled/
5. Adım: Nginx Yapılandırmasını Test Etme
Herhangi bir syntax hatası olup olmadığını kontrol edin:
sudo nginx -t
Çıktı şu şekilde olmalıdır:
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
Yapılandırmayı yeniden yükleyin:
sudo systemctl reload nginx
Nginx vs Apache: Performans Karşılaştırması
Çoklu site barındırma konusunda Nginx'in Apache'ye göre önemli avantajları bulunmaktadır:
| Özellik | Nginx | Apache |
|---|---|---|
| Eşzamanlı Bağlantı | Event-driven (non-blocking) | Process/Thread-based |
| Bellek Kullanımı | Düşük (~2-10MB/bağlantı) | Yüksek (~8-12MB/bağlantı) |
| Static İçerik Hızı | 2-3x daha hızlı | Standart |
| Konfigürasyon | Digest-based | .htaccess tabanlı |
Sunucu kaynaklarınızı optimize etmek için port hızı ve trafik kotası karşılaştırması hakkında bilgi almanızı öneriyoruz.
SSL/TLS Sertifikası ile Güvenli Yapılandırma
Modern web siteleri için HTTPS zorunlu hale gelmiştır. Let's Encrypt ile ücretsiz SSL sertifikası kurabilirsiniz:
sudo apt install certbot python3-certbot-nginx -y
sudo certbot --nginx -d alanadi1.com -d www.alanadi1.com
SSL yapılandırmanızı test etmek için SSL Labs test rehberimizi inceleyebilirsiniz.
Yaygın Hatalar ve Çözümleri
403 Forbidden Hatası
Bu hata genellikle dosya izinlerinden kaynaklanır. Çözüm için:
sudo chmod -R 755 /var/www/alanadi1.com
sudo chown -R www-data:www-data /var/www/alanadi1.com
Port Çakışması
Birden fazla site aynı portu kullanmaya çalışıyorsa, Nginx hata verecektir. Yapılandırma dosyalarınızı kontrol edin:
sudo netstat -tulpn | grep nginx
"Welcome to Nginx" Sayfası Görünüyor
Varsayılan yapılandırma dosyası hala etkin olabilir. Devre dışı bırakın:
sudo rm /etc/nginx/sites-enabled/default
Production İçin En İyi Uygulamalar
- Yedekleme: Yapılandırma değişikliklerinden önce her zaman yedek alın
- Log İzleme: Error ve access loglarını düzenli kontrol edin
- Rate Limiting: DDoS koruması için rate limit ayarlarını etkinleştirin
- Gzip Sıkıştırma: Bant genişliği tasarrufu için Gzip'i aktif edin
- Cache Yapılandırması: Statik içerik için tarayıcı cache sürelerini ayarlayın
gzip on;
gzip_types text/plain text/css application/json application/javascript text/xml application/xml;
WAF koruması için ModSecurity WAF kurulumu rehberimizi inceleyebilirsiniz.
Sonuç
Nginx virtual hosts yapılandırması, tek bir sunucu üzerinde birden fazla web sitesini verimli şekilde barındırmanın en iyi yoludur. Bu rehberdeki adımları takip ederek profesyonel bir çoklu site ortamı oluşturabilirsiniz.
Performans sorunları yaşarsanız, ağ optimizasyonu ve sunucu izleme araçlarını kullanmanızı öneriyoruz. Ayrıca DNS yönetimi için SOA ve TTL rehberimiz faydalı olacaktır.