Nginx vs Apache: Bire Bir Karşılaştırma ve Nasıl Seçilir

Güncelleme: 2022-07-15 / Makale: Timothy Shim

Her ikisi de nginx ve Apache zengin özelliklere ve yüksek performansa sahip olgun ürünlerdir. Ortak açık kaynak kökenlerini paylaşırlar ve bunları Windows veya Linux Sunucular. 

Ancak, bazı önemli farklılıklar birini diğerine tercih etmenize neden olabilir.

Örneğin Apache, kullanıma hazır birçok farklı teknolojiyi ve modülü destekleyen kapsamlı bir çözümdür. Buna karşılık, Nginx, işlevselliğini genişletmek için üçüncü taraf modüllere güvenir.

Hangisini görmek için web sunucusu ihtiyaçlarınıza daha uygun olabilir, hadi bu seçeneklere daha yakından bakalım.

Apache – Orijinal Kahraman Web Sunucusu

Apache

tarafından 1995 yılında oluşturuldu Robert McCool ve orijinal olarak "Apache HTTP Sunucu Projesi" (dolayısıyla adı) olarak adlandırılan Apache, değişikliklerle bile kullanımı ücretsiz, sağlam, ticari düzeyde bir sunucu oluşturmak için tasarlanmıştır. Unix'ten Windows'a kadar birçok farklı işletim sisteminde çalışabildiği için çok hızlı bir şekilde popüler oldu.

Uzun süredir devam eden bu popülerlik nedeniyle Apache'yi “orijinal kahraman” web sunucusu olarak görüyorum. Sağlamdır, iyi belgelenmiştir ve Apache Yazılım Vakfı'nın himayesinde açık bir geliştiriciler topluluğu tarafından desteklenmektedir.

Nginx – Yeni Bir Çağın Titanı

nginx

Nginx ("Motor X" olarak telaffuz edilir), bir HTTP ve ters proxy sunucusu, bir posta proxy sunucusu ve her boyuttaki web sitelerini ve uygulamaları barındırmak için kullanılan genel bir TCP/UDP proxy sunucusudur. İlk olarak Rus geliştirici tarafından halka açık olarak yayınlandı. Igor Sysoev. Nginx'in ilk hedefi, Apache'nin yönetmekte zorlandığı C10K sorununu çözmekti. 

Ayrıca oku

Nginx ve Apache Arasındaki Önemli Farklar

mimari

Nginx ve Apache, çekirdek mimarilerinde bazı benzerlikleri paylaşır. Örneğin, her ikisi de performansı artırmak için ana-işçi süreçlerini kullanır. Hatta benzer yapılandırma dosyalarına sahipler. Yine de mimari tarzdaki farklılıklar, önemli bir geniş görüş performansı varyasyonuyla sonuçlanır.

Nginx, yük altında küçük ama sabit miktarda bellek kullanan, kaynak dostu, olaya dayalı bir mimariye sahiptir. Bu özellik, yüksek trafik seviyelerine sahip veya aralıklı trafik artışları olan web sitelerini barındırmak için ideal hale getirir.

Apache'nin süreç odaklı mimarisi, her bağlantıyı daha fazla bellek gerektiren özel bir iş parçacığı aracılığıyla yönetir. Ancak, daha fazla CPU çekirdeği ve RAM'e sahip makinelerde ağır yükler altında daha iyi ölçeklenir.

Bellek Kullanımı

Nginx, yüksek performansı ve düşük kaynak tüketimi ile bilinir. Öte yandan, Apache, özellikle birden çok sunucu bloğu çalıştırırken yoğun bellek kullanabilir. Her ikisi de HTTP isteklerini işlemek için belleği kullanırken, Nginx daha hafiftir. 

Apache'nin tasarımı, bağlantı başına bir iş parçacığı oluşturması ve her iş parçacığının belirli bir miktarda RAM kullanması anlamına geliyordu. Trafik arttıkça, özellikle daha az belleğe sahip sunucularda daha fazla RAM gerekeceğinden bu sorunlara yol açabilir. Apache, aynı kullanıcıdan bile olsa her istek için yeni süreçler oluşturur.

Nispeten, Nginx, aynı anda birden çok bağlantıyı işlemek için bir işlem kullanır. 

PHP İşleme

Çünkü bu web sunucularının her ikisi de esas olarak PHP, kodu nasıl işledikleri önemli performans potansiyeli anlamına gelir. Nginx, PHP'yi varsayılan olarak doğrudan çalıştırmaz. Bunun yerine, isteği PHP-FPM'ye iletir (FastCGI Process Manager), isteği işler ve Nginx'e bir yanıt gönderir ve ardından içeriği istemciye geri sunar.

Nginx, başka bir istek sunmak için PHP-FPM'den yanıt beklemediğinden (statik içerik sunarken istemcilerden yanıt beklememesine benzer şekilde), Nginx, Apache'nin yönetebileceğinden daha fazla isteği eşzamanlı olarak işleyebilir.

Apache, PHP kodunu yürütmek için mod_php adlı bir modül kullanır. Bu modelde, bir HTTP isteği her geldiğinde, Apache bu isteği işlemek için (nasıl yapılandırıldığına bağlı olarak) yeni bir süreç veya iş parçacığı oluşturur. Bu süreç, o istek içindeki herhangi bir PHP isteğini işlemekten de sorumludur.

Bu model çalışıyor, ancak bazı dezavantajları var. Her şeyden önce, her istek için yeni bir süreç oluşturmak, özellikle aynı anda çok sayıda istek varsa, sistemde yoğun olabilir. Bir istek içindeki her PHP isteği için yeni bir süreç oluşturmak, işletim sisteminin her biri için yepyeni bir yorumlayıcı oluşturması gerektiğinden daha da yoğundur.

Nginx ve Apache Arasında Nasıl Seçim Yapılır?

Gördüğünüz gibi, bu web sunucusu devleri arasında net bir kazanan yok. Esas olarak, yönetmek için web sunucusuna neye ihtiyacınız olduğuna bağlıdır. 

Şu durumlarda Apache'yi seçin: 

  • Zaman içinde önemli ölçüde büyümesi muhtemel olan ve özel modüller gerektiren orta/büyük ölçekli bir web sitesi işletiyorsunuz.
  • Sunucunuzda etkinleştirilmiş birçok sanal ana makineniz veya modülünüz var ve bunların tümüne başlangıçta ihtiyacınız var.
  • Küçük bir web sitesi işletiyorsunuz ve Nginx'i doğru şekilde nasıl yapılandıracağınızı öğrenmek için zaman harcamak istemiyorsunuz.

Nginx'i şu durumlarda kullanın:

  • Büyük ölçekli bir web sitesi işletiyorsunuz ve donanım sınırlamaları konusunda endişelenmeden önbelleğe alma ve yük dengelemeyi aynı anda kolayca yapılandırmak istiyorsunuz.

Nginx ve Apache Üzerine Son Düşünceler

Apache'yi mi yoksa Nginx'i mi çalıştırdığınız, ihtiyaçlarınıza ve çalıştırdığınız donanıma bağlı olacaktır. PHP web sitelerine hizmet vermek için her iki seçeneği de kullanabilirsiniz. Ama sadece bundan daha fazla dikkate alınması gereken çok şey var. 

Basit bir web siteniz varsa, aralarında herhangi bir fark görmeyebilirsiniz. Ancak siteniz daha fazla trafik alır ve büyürse, her bir sunucunun yük altında nasıl performans gösterdiğini ve ölçeklendiğini bilmeniz gerekir.

Ayrıca oku

Timothy Shim hakkında

Timothy Shim bir yazar, editör ve teknoloji uzmanıdır. Kariyerine Bilişim Teknolojisi alanında başlamış, hızla baskıya geçmiştir ve o zamandan beri ComputerWorld, PC.com, Business Today ve The Asian Banker gibi Uluslararası, bölgesel ve yerel medya başlıklarında çalışmıştır. Uzmanlığı, hem tüketici hem de kurumsal bakış açısından teknoloji alanında yatar.