NGINX , yaygın olarak kullanılan açık kaynaklı bir web sunucusu yazılımıdır. 2002 yılında Igor Sysoev tarafından başlatılan bir projeydi. Ekim 2004’te resmi olarak piyasaya sürüldü. Aynı anda on bin bağlantıyı yönetme zorluğu olarak tanımlanan C10k sorununu çözmek için oluşturulmuştur.
Bugün, ağ içinde yapılan bağlantı sayısında bir sınır yoktur. Bu sorunun üstesinden gelmek için NGINX, geleneksel süreç güdümlü mimariden tamamen farklı, olay güdümlü ve eşzamansız bir mimariyle tanıtıldı. Bu nedenle NGINX, hız ve ölçeklenebilirliği koruyan en güvenilir sunucu olarak kabul edilir.
Daha önce, NGINX, HTTP web sunumu için işlev görüyordu. Ancak o zamandan beri gelişti ve şimdi IAMP, POP3 ve SMTP için Ters proxy, HTTP yük dengeleyici, stream ve e-posta proxy’si olarak da hizmet veriyor. NGINX, büyük bağlantıları şaşırtıcı bir hızla işleme yeteneği nedeniyle yüksek trafikle uğraşan birçok web sitesi tarafından tercih edilen web sunucularından biridir. Apache HTTP sunucusuna önemli bir rakip olarak pazara girmiştir.
Daha önce, her istemci isteği, artan bağlantıları işlemek için karmaşık hale gelen ayrı bir iş parçacığı olarak ele alınırdı. Bu gecikmeli bir yanıta yol açar ve web sunucusunun yavaşlamasına yol açar. Farklı iş parçacıkları arasında geçiş yapmak, CPU kullanımının yanı sıra genişletilmiş bellek kullanımı ve CPU süresi gerektirir ve bu da web sitesinin performansını etkiler. NGINX ile daha iyi kaynak kullanımı ile birlikte on kat daha iyi performans elde edebilirsiniz.
İçerik Tablosu
NGINX Nedir?
NGINX bir web sunucusudur ancak genellikle ters proxy olarak kullanılır. Bir web sunucusu ve bir ters proxy olarak verimli bir şekilde ölçeklenebilir. Belirli bir bağlantıya bir işlem atamanıza izin vermez, ancak ağ içindeki birden çok bağlantı arasında kolayca paylaşılabilen bir işlem havuzu oluşturur.
Bir istek yapıldığında, sürece bir kaynak tahsis edilir ve bu da kapsamlı bağlantıları kolayca yönetebilecek daha iyi kaynak kullanımı ile sonuçlanır.
NGINX ayrıca veri merkezleri ve dış ağ arasında güvenli bir bağlantı kurmaya yardımcı olur. Aynı zamanda, birden çok farklı yük paylaşım mekanizması kullanmanıza izin veren bir HTTP yük dengeleyici (load balancer) olarak da iyi çalışır.
NGINX Kullanmanın Avantajları
- Yazılı kod tabanı diğer alternatiflere göre daha tutarlıdır.
- Kolay bir konfigürasyon formatı sağlar ve diğer web sunucu alternatiflerinden daha modern bir tasarıma sahiptir.
- Olay tabanlıdır ve bağlam değiştirme nedeniyle ek yük olmadan birden çok bağlantıyı yönetmenize olanak tanır.
- Daha az bellek ve kaynak kullanır.
- NGINX, web sitesini daha hızlı hale getirir ve daha iyi bir Google sıralaması elde etmelerine yardımcı olur.
- Ruby, python, WordPress, Joomla gibi yaygın olarak kullanılan web uygulamalarıyla uyumludur.
- Dinamik içeriğin statik içeriğe dönüştürülmesine yardımcı olur.
- Aynı anda binlerce eşzamanlı bağlantının işlenmesine yardımcı olur.
NGINX Kullanmanın Dezavantajları
- Apache’ye kıyasla küçük topluluk desteği ile birlikte gelir, ancak Apache’den daha fazla kullanım durumu vardır.
- Apache’ye kıyasla size çok fazla modül ve uzantı sunmaz.
Neden NGINX’i Kullanmalısınız?
NGINX’i birçok nedenden dolayı kullanabilirsiniz ve bunlardan bazıları aşağıda belirtilmiştir.
- Tek bir giriş noktası sağlar: Kapsayıcı ortam içinde, gerektiğinde kapsayıcıları dağıtabilir veya yok edebilirsiniz, ancak kullanıcıların hizmetlere erişmesi için tek bir giriş noktasına sahip olmak daha iyi bir yaklaşımdır. NGINX, bunu sağlamak için daha iyi bir çözümdür. Dengeyi yüklemenize ve trafiği sabit bir genel IP adresiyle yönlendirmenize yardımcı olacak NGINX sunucularını kontrol edebilirsiniz. NGINX sunucusu, kullanıcının isteğini alacak ve ardından bunu uygun kapsayıcıya iletecektir.
- Önbelleğe Alma: NGINXsunucusu, performansı artıran hem statik hem de dinamik içerik için bir önbellek sağlar. Her veri talebini, onu oluşturan mikro hizmete yönlendirmek size maliyetli olacaktır. Verileri kısa bir süre için önbelleğe almak için mikro önbelleğe alma uygulayarak back-end altyapı yükünü azaltabilirsiniz. Kaynakları ikinci kez ölçeklendirmeden uygulamaların sorunsuz çalışması için yoğun trafik sırasında yalıtılmasına yardımcı olur.
- Birden çok back-end uygulaması: NGINX kümesi, çeşitli uygulamalar için trafiğin verimli bir şekilde yönetilmesine yardımcı olur ve bu nedenle birçok bulut sağlayıcısı tarafından tercih edilir. NGINX sunucusu, her isteği uygun hizmetlere yönlendirecek olan ayrı HTTP uç noktaları için gelen trafiği proxy yapmak için kullanılır. Ayrıca, herhangi bir kesinti olmadan kuralları güncellemenize ve NGINX örneğini karmaşık uygulamalar için bile kullanılabilir hale getirmenize olanak tanır.
- A/B Testi: NGINX, mikro hizmet uygulamalarının kullanıma sunulmasına yardımcı olan A/B testi özellikleriyle birlikte gelir. NGINX ile gelen trafiği birçok hedef arasında kolayca bölebilirsiniz. Ne zaman yeni bir mikro hizmet dağıtsanız, trafiği bölebilir ve bazı kullanıcıları bu uygulamaya yönlendirebilirsiniz. Bu, trafiği izlemenize ve her iki sürümün de gerçek zamanlı trafiği nasıl ele aldığındaki farkı hissetmek için KPI’ları ölçmenize olanak tanır.
- Konsolide günlük kaydı: NGINX, standart HTTP günlük formatı ile birlikte gelir. Her bir mikro hizmet trafiği için ayrı bir günlüğe sahip olmak ve bunları daha sonra birleştirmek yerine, tüm web trafiğini NGINX ön ucunda kaydetmenize olanak tanır. NGINX’i kullanarak, erişim günlüklerini oluşturma ve sürdürmenin karmaşıklığını azaltabilirsiniz.
- Ölçeklenebilirlik ve hata toleransı: NGINX’in yük dengeleme (load balance), sağlık kontrolleri özellikleri, herhangi bir mikro hizmetin eklenmesi veya kaldırılması, kullanıcının deneyimini etkilemeyecek şekilde back-end altyapınızı ölçeklendirmenize olanak tanır. Daha fazla mikro hizmet dağıtmak istiyorsanız, load balance havuzuna yeni bir örnek eklediğinizi NGINX sunucusuna bildirmeniz yeterlidir. Başarısız bir örnek durumunda, NGINX kurtarılana kadar trafiği o örneğe yönlendirmez.
- Sıfır kesinti: NGINX, web sunucusunun sorunsuz çalışmasını sağlar. Hatta sistem yazılımını bağlantı kesintisi olmadan sorunsuz bir şekilde güncelleyebilir veya yükseltebilir ve herhangi bir uygulama kesintisini önleyebilirsiniz.
- DoS saldırılarını azaltır: NGINX, tonlarca gelen isteği veya HTTP trafiğini işlemesi, yoğun trafik sırasında uygulama güvenliğini sağlaması, ortak önbellek yanıtı ve isteği sorunsuz bir şekilde teslim etmesiyle tanınır. NGINX, uygulamalarınız için bir amortisör görevi görür. Ayrıca, savunmasız API‘leri ve URL’leri isteklerle aşırı yüklenmekten koruyacak trafiği de kontrol eder. Bu, sunucunun aşırı yüklenmesini önlemek için bir eşzamanlılık sınırı uygulanarak ve istekleri kuyruğa alarak başarılabilir.
Son olarak;
NGINX sunucusunun kısa bir tarihçesinden, nasıl oluştuğundan, sunucu ortamındaki yerinden ve ayrıca NGINX kullanmanın faydalarından bahsettik. NGINX, aynı zamanda bir e-posta proxy’si, ters proxy ve yük dengeleyici (load balancer) olarak da görev yapan bir web sunucusudur.
NGINX’in yapısı asenkrondur ve ayrıca olaya dayalıdır; Bu, aynı anda birden fazla isteğin işlenmesini sağlar. NGINX, kolayca yüksek düzeyde ölçeklenebilir, bu da hizmetinin müşterilerinin trafiğiyle birlikte büyümesini sağlar.