NGINX, Igor Sysoev tarafından yazılmış performans odaklı ve açık kaynak kodlu bir web sunucusu (server) yazılımıdır. İlk olarak 2002 yılında kullanılmaya başlasa da resmi duyurusu 2004 yılında yapılmıştır. En çok kullanılan web server yazılımlarından biridir. Apache web server ve Litespeed server’a nazaran daha az sistem kaynağı kullanması ve çok daha az CPU kullanımı yapması nedeniyle düşük donanım konfigürasyonuna sahip sunucularda özellikle tercih edilmektedir.

Web Server (Web Sunucusu) Nedir?

Web serverlar (web sunucuları) bir web sitesine ait içeriğin (resim, yazı, video, aplikasyon) saklanması ve bir istemci (web tarayıcısı) tarafından gelen request (istek) durumunda bu içeriğin gösterimini gerçekleştiren sunuculardır.

NGINX Nedir?

NGINX, şu anda dünya genelinde 400 milyon kadar web sitesi içeriğini sunan ve gitgide popülaritesi artan yazılımsal bir web sunucusudur. NGINX ‘e  ilave edilecek eklentilerle çok farklı kabiliyetler kazandırabilir.

NGINX Web Server Özellikleri Nelerdir?

NGINX, düşük kaynak kullanımı özelliği ile de avantaj sağlayan ve Unix, Linux, Mac OS X, BSD Türevleri, Microsoft Windows işletim sistemleri ile de uyumlu çalışır. Ayrıca bu web server yazılımı, Reverse Proxy (Ters Vekil Sunucusu), Load Balancing (Yük Dengeleyici), API ağ geçidi ve HTTP Caching için de kullanılan çok özellikli bir web sunucusudur.  

Açık kaynak koduyla sunulması, birçok eklenti ile yeni özellikler kazanması sebebiyle tercih konusu oluyor. Google, Netflix, Cloudflare, WordPress gibi büyük markalar NGINX tercih ediyor. Bunun yanında NGINX Plus gibi ücretli versiyonu ile daha fazla kabiliyet ve kapasite sunmaktadır. 

  • NGINX, web sitelerine önbellekleme (Caching) yaparak daha hızlı gösterim sağlar. 
  • NGINX, web sitelerine önbellekleme (Caching) yaparak daha hızlı gösterim sağlar. 
  • Load Balancing (Güç dengeleme) özelliği ile web sitelerinden gelen yükü birden farklı bilgisayar, sabit disk ve işlemciye dağıtarak sistemin overload(aşırı yükleme) olmasını engellemektedir. Sistem kaynaklarının dengeli kullanılması performansa doğrudan etki eder.
  • NGINX performans açısından da tercih edilmektedir. Çok daha az hafıza kullanarak aynı anda birçok işlem yapma yeteneğine sahip olması kullanıcılara büyük avantaj sağlıyor.
  • Aynı anda 10.000 eş zamanlı bağlantı işlemesi yapabiliyor. 
  • IP6 desteği mevcuttur.
  • FastCGI, SCGI, uWSGI desteği mevcut.
  • FLV ve MP4 medya oynatıcı desteği vardır.
  • Gzip sıkıştırma imkanı.
  • Gömülü Perl desteği.
  • Eş zamanlı bağlantı sınırlaması, birim zamanda istek işleme sınırlaması ve band genişliği sınırlaması imkanı tanıyor.
  • İsim ve IP tabanlı sanal sunucu oluşturma desteği.
  • Web erişimi için kimlik doğrulama desteği.
  • IP tabanlı coğrafi konum desteği.
  • TSL/SSL SNI ve OCSP stabling desteği.
  • SMTP, POP3 ve IMAP sunucusu desteği.
  • HTTP2 desteği mevcuttur.

NGINX kod kaynağına buradan ulaşabilirsiniz. Bunun yanında NGINX yapılandırma,  Instant Manager ile geniş ölçekte izleme yapabilmek için burayı tıklayabilirsiniz.

NGINX’i Hangi Durumlarda Kullanmak Gerekir?

Caching Önbellekleme Yapmak 

NGINX önbellek oluşturmak için ideal çözüm sunan bir web serverdır. NGINX önbelleğe alınan response’ları disk üzerinde tutar. Backend serverlardan gelen her response sınıfına göre farklı sürelerde önbellek edilerek cache olarak saklanabilir. NGINX cache yenilenme sürelerinin ayarlamasına da olanak tanır. Bazı modüller yardımıyla “cache purge” önbellekleri manuel olarak silmeniz de mümkün.

Load Balancing (Yük Dengesi Sağlamak)

Yük dengeleme özelliği olan NGINX, sunuculara gelen istekleri ilgili sunuculara dağıtır. Bu işlem sırasında sorun olan bir sunucu varsa o sunucuya daha fazla istek gönderilmesine engeller ve bu istekleri daha uygun diğer server (sunucuya) yönlendirerek hata oluşmasının önüne geçer. Sistem kaynaklarının dengeli kullanılması, sunucuların aşırı yüklenerek response (cevap) veremeyecek hale gelmesinin de önüne geçer.

Dinamik Siteleri Yayınlamak

PHP, .NET, Python kullanarak oluşturduğunuz dinamik bir web sitesinde ise NGINX tüm trafiği ön planda karşılar, statik dosyaları doğrudan sunar, sizin önceden belirlediğin istekleri (Request) backend tarafına gönderir ve reverse proxy işlemi gerçekleştirir. Bunun yanında gerekirse kuyruklama yapıyor ve yük dengelemesi yaparak web sitenizin sunucu tarafında sıkıntı yaşanmasının önüne geçiyor.  

Statik Web Sitelerini Yayınlamak

Statik bir web sitesine sahipseniz veya dosya paylaşımı yapmak istiyorsanız NGINX kullanabilirsiniz. Bir klasörü internete açarak paylaşım yapmak, NGINX tarafından otomatik olarak yapılacak indeksleme ile kolayca gerçekleşir. 

TCP/UDP Proxy Olarak Kullanmak

NGINX normal HTTP ve HTTPS bağlantı protokollerinin haricinde TCP UDP protokollerini kullanan ağ uygulamalarının önünde proxy olarak kullanılma imkanına sahiptir.

NGINX ve Apache Web Server

Apache web server en çok kullanılan ve NGINX ile en sık karşılaştırılan web server’lardan biridir. Apache web server en popüler web server olarak karşımıza çıkıyor, tabi yine NGINX kullanımının her geçen gün artmakta olduğunu belirtmeden de geçmeyelim. Şimdi isterseniz ikisi arasındaki farklar üzerine değinelim.

İşletim Sistemi

İşletim sistemi uyumluluğu olarak ikisi de UNIX işletim sistemlerinde sorunsuz çalışıyor. Ancak bunun yanında NGINX Windows işletim sistemi üzerinde diğerlerindeki kadar iyi değil.

Performans 

NGINX aynı anda gerçekleştirilen örneğin 1000 statik içerik bağlantısını Apache’ ye göre iki kat daha hızlı çalıştırabiliyor.  Bunu yaparken sistem belleğini daha az kullanıyor. Dinamik web sitelerinde ise performans farkı fazla değil. 

Kullanıcı Desteği

Sistemleri kullanırken ortaya çıkacak sorunlar hakkında hızlı çözüme ulaşmak önem arz eder. İkisi de e-posta desteği konusunda benzer, bunun yanında ikisinin de Stackoverflow forumu mevcut. 

Sonuç

NGINX küçük, yetenekli ve çok hızlı çalışan iyi bir web server olarak karşımıza çıkıyor. Özellikle statik web sitelerinde tercih edilmesi öneriliyor. Ücretsiz ve açık kaynak kodlu olması da bir tercih sebebi olarak karşımıza çıkabilir. Windows işletim sisteminde çok başarılı olmadığını da hatırlatmakta fayda var. Ancak caching özelliği load balancing özelliği ve ters proxy özelliği ile ön plana çıkıyor. Bunun yanında daha fazla kabiliyet ve özelliğe sahip NGINX Plus ürünü de mevcut.