Sunucu Tarafı Hesaplaşması: Apache ve NGINX
Web sunucuları internetin merkezinde yer alır. Apache ve NGINX gibi web sunucusu yazılımları olmasaydı, web bugün gördüğümüz gibi olmazdı. Ancak, değiştirilemezler. Bu iki seçenekten hangisinin (Apache vs NGINX) sizin için en iyisi olduğunu bilmek için nasıl çalıştıklarını anlamanız gerekir.
Bu yazıda web sunucularının ne olduğundan ve nasıl çalıştıklarından bahsedeceğiz ve hem Apache'yi hem de NGINX'i tanıtacağız. Ardından Apache ile NGINX'i temel farklılıklar açısından karşılaştıracağız ve artılarını ve eksilerini gözden geçireceğiz.
Hadi hadi bakalım!
İnternet sunucusu nedir?
Özetle, bir web sunucusu, Apache veya NGINX gibi sunucu yazılımlarını çalıştırmaya adanmış bir bilgisayardır. Bir web sunucusu hem site dosyalarını depolar hem de bunlara erişmek için gelen istekleri işleyebilir.
Önemli bir sorumluluk olan bu son görevden sorumlu olan web sunucusu yazılımıdır. Popüler web siteleri için, kullandığınız yazılımın çok sayıda isteği küçük bir zaman diliminde işlemesi gerekebilir, bu nedenle göreve uygun olması gerekir. Hem NGINX hem de Apache, çok sayıda isteği ölçeklendirme ve işleme yeteneğine sahiptir. Ancak, her iki sunucu seçeneğinin çalışma şekli temel düzeyde farklıdır.
Web sunucusu yazılımı, modern web sitelerine ve uygulamalara hizmet etmek için diğer birkaç bileşenle birlikte çalışır. Örneğin, bir sunucuda WordPress kurmak için aşağıdaki bileşenlere ihtiyacınız vardır:
- HTTPS destekli web sunucusu: Bu, Apache, NGINX veya birkaç başka seçenek olabilir.
- PHP: WordPress, PHP dili üzerine kurulmuştur, dolayısıyla İçerik Yönetim Sistemini (CMS) çalıştırmak için buna ihtiyacınız vardır.
- Veritabanı yazılımı: Bu MySQL veya MariaDB olabilir.
Bu makale için yalnızca web sunucusu yazılımına odaklanacağız. Ancak, yazılımın boşlukta çalışmadığını anlamak önemlidir. Hatta bazı durumlarda Apache ve NGINX gibi web sunucularını birlikte çalışacak şekilde yapılandırabilirsiniz. Web sitelerinin bunu yapabilmesinin bir yolu, ana sunucu yazılımı olarak Apache'yi kullanırken NGINX'i ters proxy olarak çalışacak şekilde yapılandırmaktır. Elinizin altındaki uygulamalar açıkça çeşitli ve bol.
Apache'ye Giriş

Uzun bir süre boyunca Apache, çoğu site için varsayılan web sunucusu seçeneğiydi. Yazılım, Robert McCool'un Apache HTTP Sunucusunu tanıttığı 1995'ten beri var. Birkaç yıl sonra, Apache Yazılım Vakfı bakımı devraldı ve Apache açık kaynaklı yazılım haline geldi.
Apache, birkaç büyük Linux dağıtımıyla birlikte kurulduğu için büyük miktarda popülerlik kazandı. Web sunucuları söz konusu olduğunda, Linux'un yaygınlığı Apache'yi yıllardır fiili tercih haline getirdi.
Apache adı Linux ile o kadar kökleşmiştir ki İşletim Sistemi (OS) sunucu işlemi için httpd komutunu kullanır (Apache'nin kendisinde bulunan bir şey). Ancak, web sunucuları söz konusu olduğunda tek büyük isim Apache değildir.
NGINX'e Giriş

NGINX, Igor Sysoev tarafından “C10K sorunu” olarak bilinen şeyin üstesinden gelebilmek için tasarlandı. Bu, bir ağı 10K'ya kadar eşzamanlı bağlantıyı işleyebilmek için optimize etmekle ilgilidir. Başka bir deyişle, NGINX maksimum ölçeklenebilirlik düşünülerek oluşturulmuştur.
Açık kaynaklı yazılım 2004 yılında piyasaya sürüldü ve şimdi bunun için iki lisans türü mevcut. Açık kaynak sürümüne ve profesyonel destek ve diğer özellikleri içeren kurumsal bir çözüm olan NGINX Plus'a sahipsiniz.
Başlangıç döneminde, çoğu web sitesi, Apache'ye kıyasla kurulum zorluğu algısı nedeniyle yalnızca statik istekleri işlemek için NGINX'i kullandı. NGINX'in pazar payı yıllar boyunca istikrarlı bir şekilde büyümüştür.
Bazı anketlere göre NGINX, Apache'yi dünyanın en popüler web sunucusu yazılımı olarak geçti. Diğer rakamlar, Apache'nin hemen ardından geldi:
Görüntü kaynağı: W3Techs.
Doğru olan, NGINX'in web'deki en popüler web siteleri arasında Apache'den çok daha popüler olmasıdır. Bunun nedeni, büyük miktarda trafik alan siteler için anahtar olan ölçeklenebilirlik söz konusu olduğunda NGINX'in yadsınamaz bir üstünlüğü olmasıdır.
Ayrıca NGINX, web sunucusu olarak kullanmak istemiyorsanız, ters proxy veya yük dengeleyici olarak “çifte görev” alabilir. Başka bir deyişle, Apache'den çok daha fazla rolü yerine getirebilir.
Ancak bu, sunucuları değiştirmeyi düşünüyorsanız NGINX'in varsayılan seçiminiz olması gerektiği anlamına gelmez. Sonraki birkaç bölümde, her bir yazılımı benzersiz kılan özellikleri inceleyeceğiz.
Apache ve NGINX: 3 Temel Fark
Hangi sunucu çözümünün sizin için en iyi seçenek olduğu hakkında konuşmadan önce, onları farklı kılan şeyleri açıklamamız gerekiyor. Apache ve NGINX ile ilgili istek işleme hakkında konuşarak başlayalım.
1. Talep Yönetimi
Dikkatli olun – işlerin biraz daha teknik hale geldiği yer burasıdır. Apache, bağlantıları yönetmek için Çoklu İşlem Modülleri (MPM'ler) adını verdiği şeyi kullanır. Yazılım, üç tip MPM arasında seçim yapmanızı sağlar:
- mpm-prefork : Bu modül, her isteği işlemek için tek iş parçacıklı işlemler oluşturur. Her "çocuk" sırayla yalnızca tek bir bağlantıyı işleyebilir.
- mpm_worker : Bu modül, her bir iş parçacığının bir bağlantıyı yönetme yeteneğine sahip olduğu çok iş parçacıklı işlemleri başlatabilir.
- mpm_event : Çoğunlukla, bu modül mpm_worker ile aynı şekilde çalışır , ancak bağlantıları canlı tutmak için optimize edilmiştir.
Apache'nin benzersiz bir yönü, kullanmak istediğiniz modülü seçmenize ve ihtiyaç duyduğunuzda bunları değiştirmenize olanak sağlamasıdır. Varsayılan olarak Apache, düşük sayıda eşzamanlı bağlantı için harika çalışan mpm-prefork modülünü kullanır. mpm_worker modülü, ölçekleme söz konusu olduğunda daha iyidir, ancak ek sunucu kaynakları gerektirir.
Buna karşılık, NGINX “olay odaklı” bir yaklaşım olarak adlandırdığı şeyi kullanır. Yazılım, her bir iş parçacığının birden çok bağlantıyı işleme yeteneğine sahip olduğu çok iş parçacıklı işlemler kullanır.
Dahası, NGINX gelen isteklerle eşzamansız olarak ilgilenir. Özetle, bu, NGINX'in daha az sunucu kaynağıyla daha fazla isteği yönetebileceği ve bu açıdan daha verimli hale getirebileceği anlamına gelir.
2. Sunucu Yapılandırması
Apache, gelen istekleri nasıl ele alacağına ilişkin belirli kurallar belirlemek için .htaccess dosyalarını kullanır. Bu dosyalar, yeniden yönlendirme kurallarından bellek sınırlarına kadar her şeyi ve daha fazlasını içerir.
Apache'yi kullanarak sunucu ağacınızdaki her dizin için ayrı .htaccess dosyaları ayarlayabilirsiniz. Size bir örnek vermek gerekirse, paylaşılan bir sunucu kurarsanız, üzerinde barındırılan her web sitesinin kendi .htaccess dosyalarını kurmasını sağlayabilirsiniz.
Bu yüksek düzeydeki esnekliğin dezavantajı, bir istek yolu boyunca karşılaştığınız her .htaccess dosyasının ayrı olarak yorumlanması gerekmesidir. Bu, isteklerin yürütülmesinin daha uzun sürebileceği anlamına gelir.
NGINX, konu konfigürasyon olduğunda size aynı seviyede esneklik sağlamaz. Doğrudan seviye yapılandırma dosyaları yerine, her şeyi yöneten bir ana dosyanız var.
3. Modüller
Modüller, varsayılan işlevselliğini genişletmek için sunucu yazılımınızla birlikte kullanabileceğiniz eklentilerdir. Apache'nin yaşı ve popülaritesi göz önüne alındığında, modül seçimi söz konusu olduğunda NGINX'e göre daha avantajlı olması şaşırtıcı olmamalıdır.
Apache yalnızca daha fazla modül sunmakla kalmaz, aynı zamanda bunların nasıl kullanılacağına ilişkin belgeler ve öğreticiler bulmak daha kolay olma eğilimindedir. Ayrıca Apache, modülleri istediğiniz zaman kurmanıza, etkinleştirmenize ve devre dışı bırakmanıza olanak vererek size yüksek derecede esneklik sağlar.
NGINX aynı avantajı sunmuyor. Modülleri kullanmak için onları NGINX çekirdeğinde derlemeniz gerekir. Ayrıca, modülleri derlendikten sonra devre dışı bırakamazsınız, bu da seçenekleri değiştirmeyi çok daha zor hale getirir.
NGINX Plus'ın modülleri istediğiniz zaman devre dışı bırakmanızı ve etkinleştirmenizi sağlayan dinamik bir modül özelliği içerdiğini unutmamak önemlidir. Ancak Plus ile bile, bu modülleri kullanmadan önce NGINX çekirdeği ile derlemeniz gerekir.
NGINX'in modül kütüphanesi ve dokümantasyonu sabit bir hızla büyümesine rağmen, hacim açısından Apache ile hala eşleşemezler. NGINX'in nasıl daha fazla pazar payı kazanmaya devam ettiği göz önüne alındığında, bu muhtemelen yakın gelecekte değişecektir.
Apache'nin NGINX'e Karşı Artıları ve Eksileri
Şimdiye kadar Apache ve NGINX arasındaki temel farkları anladınız. Şimdi her bir yazılımın artılarını ve eksilerini kısaca açıklayalım.
Apaçi
Başlangıç olarak, Apache kullanmanın başlıca faydalarından bahsedelim:
- Kurulumu ve yapılandırması daha kolay olabilir
- .htaccess dosyaları sayesinde sunucunuzun yapılandırması üzerinde daha ayrıntılı kontrol elde edersiniz
- Modül seçimi daha iyidir ve modülleri istediğiniz zaman etkinleştirebilir ve devre dışı bırakabilirsiniz.
- Farklı modüller kullanarak istekleri nasıl ele alacağınıza karar verebilirsiniz.
Apache'yi NGINX'e karşı kullanmanın birincil dezavantajı, ikincisinin basitçe daha iyi ölçeklenmesidir. Hala web sitenizin büyüme aşamasındaysanız, Apache trafiği idare etmek için fazlasıyla yeterli olmalıdır.
Ancak, bir noktada siteniz önemli ölçüde başarılı olursa sunucu yığınınızı güncellemeyi düşünmeniz gerekebilir. Bu, NGINX'e geçmek veya onu Apache web sunucunuz için ters proxy olarak kullanmak anlamına gelebilir.
NGINX
NGINX'in Apache söz konusu olduğunda iki açık avantajı vardır: performans ve ölçeklenebilirlik. Daha spesifik olmak gerekirse, NGINX şu durumlarda daha iyidir:
- Çok sayıda eşzamanlı isteği işleme
- Daha az donanım kaynağıyla daha iyi performans elde etme
- Statik içeriği daha hızlı sunma
Bu son kısım, birçok insanın NGINX'i ters proxy çözümü olarak kullanmayı seçmesinin nedenidir. Performansla ilgili tüm faydalarına rağmen, NGINX kusursuz değildir.
Tek bir yapılandırma dosyasına sahip olmak, istek sürelerinin azalması anlamına gelse de, bu aynı zamanda NGINX'in Apache'den daha az esnek olduğu anlamına gelir. Bu, modüller için de geçerlidir, çünkü NGINX'in açık kaynaklı sürümü sizi modülleri kullanmak için derlemeye zorlar ve bunları devre dışı bırakamazsınız. Pratikte bu, NGINX'i gerektiği gibi çalışacak şekilde ayarlamanın Apache kullanmaktan çok daha karmaşık olabileceği anlamına gelir.
NGINX'i kullanmanın birincil nedeni, performansın birincil endişeniz olup olmadığıdır. Bir noktada, popüler web sitelerinin büyük trafiği kesintiler, uzun yükleme süreleri ve daha fazlası olmadan idare etmek için büyük silahları çekmesi gerekiyor. Ayrıca NGINX, daha az donanım kaynağı ile daha iyi performans sonuçları elde etmenizi sağlayabileceğinden, daha uygun maliyetli bir seçenek olabilir.
Çözüm
Sunucuları veya sunucu yazılımını değiştirmek her zaman büyük bir karardır. Bu nedenle, ideal olarak, uzun vadede bağlı kalacağınız sunucu çözümünü kullanmak isteyeceksiniz.
Apache ve NGINX arasında seçim yapmak göründüğü kadar net değildir. Çoğu durumda, web barındırıcınız hangi yazılımın kullanılacağına karar vereceğinden karar size bağlı olmayacaktır. Pratik düzeyde, araştırmanızı yapmanız ve taahhütte bulunmadan önce bir web barındırıcısının hangi seçeneği kullandığını bulmanız gerekir.
Apache ve NGINX arasında nasıl seçim yapacağınız konusunda sorularınız mı var? Aşağıdaki yorumlar bölümünde onlar hakkında konuşalım!
ProStockStudio / Shutterstock.com'dan makale küçük resmi
ev borcu WordPress sitesi