Nginx, açık kaynaklı bir web sunucusu ve ters proxy yazılımıdır. İlk sürümü 2004’te Igor Sysoev tarafından, yüksek trafikli sitelerde eşzamanlı bağlantı sorununu çözmek için geliştirildi. Statik dosyaları doğrudan ve hızlı sunar; dinamik istekleri arka plandaki uygulama sunucularına yönlendirir. Yük dengeleme, SSL sonlandırma ve önbellekleme de üstlendiği görevler arasındadır.
Ne işe yarar?
- HTML, CSS ve görsel gibi statik dosyaları doğrudan sunarak uygulama sunucusunun yükünü azaltır.
- Ters proxy olarak istemci ile arka uçtaki uygulama (Node.js, Python, PHP) arasında durur; uygulama sunucularının dışarıya doğrudan açılmasını önler.
- Gelen trafiği birden fazla sunucuya dağıtır; böylece bir sunucu düştüğünde site tamamen erişilemez hale gelmez.
- SSL/TLS sertifika işlemlerini tek noktadan yönetir.
- Sık istenen yanıtları önbelleğe alarak aynı içeriğin her seferinde yeniden üretilmesini engeller.
Nasıl çalışır?
Nginx her bağlantı için ayrı bir süreç veya iş parçacığı (thread) açmaz. Tek bir ana işlem (master process) ve birkaç işçi işlem (worker process) çalışır. Ana işlem yapılandırmayı okur, işçi işlemleri başlatır ve izler; işçi işlemler olay döngüsü (event loop) üzerinden binlerce bağlantıyı aynı anda takip eder. Bir bağlantıdan veri beklerken başka bir bağlantıya yanıt verebildiği için bellek ve CPU tüketimi düşük kalır, gecikme süreleri öngörülebilir olur.
Yapılandırma mantığı
Ayarlar nginx.conf dosyasında iç içe bloklar halinde yazılır. http bloğu genel HTTP ayarlarını, server bloğu bir siteyi (sanal sunucuyu), location bloğu ise belirli URL yollarını tanımlar. Örneğin /images/ ile başlayan istekleri doğrudan bir dizinden sunmak için tek bir location bloğu yeterlidir. Dinamik istekler proxy_pass ile arka uca aktarılır; birden fazla arka uç tanımlanacaksa upstream bloğu kullanılır ve round-robin ya da least_conn gibi dağıtım yöntemlerinden biri seçilir. Sıkıştırma (gzip) açılarak metin tabanlı içeriklerin boyutu küçültülebilir. Değişiklikten sonra yapılandırmayı nginx -t ile test edip hizmeti kesintisiz yeniden yükleyebilirsiniz.
Nginx ve Apache karşılaştırması
| Konu | Nginx | Apache |
|---|---|---|
| Mimari | Olay tabanlı, asenkron | Süreç veya iş parçacığı tabanlı |
| Kaynak kullanımı | Yüksek eşzamanlılıkta düşük bellek | Yük arttıkça kaynak tüketimi yükselir |
| Statik içerik | Çok hızlı | Yeterli, ancak yoğun yükte geride kalabilir |
| Dizin bazlı ayar | .htaccess desteği yok | .htaccess ile dizin bazlı yapılandırma |
| Modül ekosistemi | Daha sınırlı | Geniş modül desteği |
Pratikte ikisi birlikte de kullanılır: Nginx önde ters proxy ve statik içerik sunucusu olarak durur, Apache arkada PHP uygulamalarını çalıştırır. WordPress sitelerinde bu yapı sık görülür; hosting tarafındaki farkları WordPress hosting nedir yazısında bulabilirsiniz. Kendi sunucunuzu yönetecekseniz sunucu seçimi için VPS nedir rehberi işinize yarar; sıfırdan başlıyorsanız web sitesi nasıl kurulur yazısı kurulum sırasını adım adım anlatıyor.
Sıkça Sorulan Sorular
Nginx neden bu kadar hızlıdır?
Her bağlantı için ayrı süreç veya iş parçacığı açmak yerine olay tabanlı ve asenkron bir mimari kullanır. Az sayıda işçi işlemle binlerce bağlantıyı aynı anda yönetebildiği için bellek ve CPU tüketimi düşük, yanıt süreleri kısa kalır.
Nginx mi Apache mi seçmeliyim?
Yoğun trafik, ters proxy, yük dengeleme ve statik içerik ağırlıklı bir altyapı hedefliyorsanız Nginx öne çıkar. Dizin bazlı .htaccess ayarları ve geniş modül desteği sizin için belirleyiciyse Apache daha uygun olabilir. İkisini birlikte kullanmak da yaygın bir çözümdür.
Nginx’i hangi projelerde kullanabilirim?
Statik web sitelerinden mikroservis mimarilerine kadar geniş bir alanda kullanılır. Yük dengeleyici, SSL sonlandırıcı, API ağ geçidi, medya akış sunucusu ve WebSocket proxy olarak da yaygın biçimde tercih edilir.
Yapılandırması öğrenmek zor mu?
Temel yapılandırma okunaklıdır ve basit bir web sunucusu kurmak dakikalar sürer. İleri düzey yönlendirme, yük dengeleme ve güvenlik kuralları yazmaya başladığınızda dosya büyür ve dikkat ister. Her değişiklikten sonra nginx -t ile test etmek ve resmi dokümantasyonu takip etmek süreci yönetilebilir kılar.




