En İyi Web Sunucusu Hangisi? (2021)
Yayınlanan: 2021-12-30Çok sayıda farklı türde sunucu yazılımı olsa da, rakiplerinizi genellikle Nginx'e karşı Apache'ye indirgeyeceksiniz. Bunun nedeni, her ikisinin de birçok farklı sunucu yapılandırması için en yüksek performansı sunması ve belirli uygulamalara diğerinden daha iyi uymasıdır.
Yine de bunlardan hangisinin ihtiyaçlarınız için daha mantıklı olduğunu düşünmek isteyeceksiniz. İşletim sistemi (OS) desteği, güvenlik, belgeler ve (tabii ki) performans gibi incelenecek birkaç farklı kategori vardır.
Bu gönderi için, Nginx ile Apache'yi birkaç farklı alanda karşılaştıracağız. Sonunda bulgularımızı özetleyeceğiz ve size doğru seçeneği belirlemeniz için gereken bilgileri vereceğiz.
Nginx ve Apache'nin Tanıtılması
Her bir sunucu türünün derin ayrıntılarına girmeden önce, size hem Nginx hem de Apache hakkında bilgi verelim. Bir sonraki bölüme geldiğimizde, her ikisinin de kullanım durumlarından bazılarını ve bunları "vahşi doğada" nerede görebileceğinizi öğreneceksiniz.
Nginx

Apache ile karşılaştırıldığında, Nginx ( "motor X" olarak telaffuz edilir ), sunucu tarafı teknolojisi dünyasına nispeten yenidir. Ancak geliştirme ekibi, Apache sistemlerinin sınırlamalarını genişletme görevini üstlendi.
Birçok kullanıcının kararlılığı ve ölçeklenebilirliği için dikkate aldığı açık kaynaklı bir çözümdür. Bu, (kısmen) olaya dayalı mimarisine bağlıdır - çoğu daha sonra. Aslında, ilk Nginx sürümünün hedefinin bir kısmı, aynı anda 10.000 bağlantıyı idare edebilmekti. Bu, o zamanlar hızla genişleyen ağ nedeniyle 2004'te gerekli olan bir şeydi.
Genel olarak, sistem yöneticileri ve site sahipleri, performansı, statik dosyalarla harika çalışması ve bir yük dengeleyici ve 'ters proxy' işlevlerini yerine getirmesi nedeniyle Nginx'i sever. Bunların tümü çalışma süresi, hız ve güvenlikle ilgilidir.
Apaçi

Apache, web sunucusu teknolojisinin bir bakıma 'yaşlı adamı'dır. Neredeyse web'in kendisi kadar eskidir – 1995'ten beri Apache, milyonlarca değilse de binlerce sunucunun merkezindeki yazılım olmuştur.
Apache, uzun süredir 'sistem yöneticileri' arasında baskın bir teknoloji olmuştur. Bunun birçok nedeni var - bazıları performansla ilgili, bazıları ise alışkanlık gücü. Ne olursa olsun, Apache sunucuları yapılandırmaların önemli olduğu yerlerde çokça kullanılır.
Apache'yi tüm Linux dağıtımlarında önceden yüklenmiş bir yazılım olarak bulacaksınız, bu nedenle bu işletim sistemi için başvurulacak bir çözümdür. Ancak, Nginx'ten farklı bir mimari kullanırken, yine de güç, ölçeklenebilirlik ve harika belgeler sunuyor.
Birçok sistem yöneticisi, Apache'nin özelleştirilebilir yapısını ve çeşitli modülleri yükleyerek bir sunucuyu nasıl kendinize ait yapabileceğinizi de sever.
Nginx ve Apache için genel kullanım örnekleri
Web sitelerine hizmet vermek söz konusu olduğunda Apache'nin “tüm işlemlerin krikosu” olduğunu söylemek doğru olur. Ancak bu karışık bir nimettir. Evet, Apache sunucuları Nginx'in yapabildiği hemen hemen her şeyi yapabilir, ancak bu, daha az performanslı kod pahasına olur. Yaş burada bir faktördür.
Apache, web sunucuları için daha gelişmiş uygulamalardan bazılarına sahip olduğumuz bir zamanda geldiğinden, kod tabanı modern web sitelerine hizmet etmek için gerekenleri yapamadı. Bu sorunlar şu anda endişe kaynağı olmasa da, Nginx gibi bir çözüm, modern web'i göz önünde bulundurarak çalışır.
Bu nedenle, paylaşılan barındırma gibi uygulamalar için yapılandırılması kolay bir sunucu olarak Apache'nin harika olduğunu göreceksiniz. Entegrasyonları, Linux, Apache, MySQL ve PHP (LAMP) yığınının bir parçası olarak yerel geliştirme sunucusu yazılımı olarak kullanıldığını da görüyor.

Buna karşılık, Nginx, Apache'ye kıyasla daha gelişmiş bir yazılım tabanına sahiptir. İstikrar ve güvenliğin kilit, temel unsurlar olduğu yerlerde iyidir. Bir Nginx sunucusunun diğer türler kadar yapılandırılabilir olmadığını göreceksiniz ve bu, çekirdeğine daha az erişeceğiniz anlamına geliyor.
Dahası, Apache ile aynı şekilde modüler değildir, bu da onu sunucu özelleştirmesi yapmanız gereken bir durum için daha az uygun hale getirir.
Nginx vs Apache: Her sunucu türünün ne kadar popüler olduğu
Uzun bir süre boyunca, sunucu yazılımı tek atlı bir yarışa benziyordu. Apache birkaç yıl baskın bir güç olarak çalıştı ve hala büyük bir pazar payına sahip. Bu nedenle, birinci sınıf belgelerle birlikte Apache sunucuları için çok sayıda entegrasyon ve destek olduğunu göreceksiniz.
Bu, Apache'yi seçmek için başka bir neden olarak hizmet eder ve sürekli kullanımına katkıda bulunur. Ancak Nginx, kendine ait büyük bir pazar payına sahip bir sunucu yazılımıdır. Nginx kullanımında zaman içinde yavaş bir artış vardır ve o kadar ki şu anda piyasadaki en baskın web sunucusu teknolojisidir, ancak çok fazla olmasa da.
İleriye baktığımızda, Nginx bir web sunucusunda sistem yöneticilerinin ihtiyaç duyduğu birçok şeyi sağladığı için Apache'nin zamanla daha az kullanım göreceğini öneriyoruz. Ancak LiteSpeed Web Sunucusu ve Cloudflare Sunucusu ufukta ve büyüyen bir kullanıcı tabanı ve yoğun bir destekle geliyor. Birkaç yıl içinde, bu karşılaştırma Nginx'i bu genç başlangıçlardan biriyle karşılaştırabilir.
Nginx vs Apache: Özelliklerin ve işlevselliğin teknik dökümü
Sonraki birkaç bölüm, Nginx ve Apache'nin bir dizi teknik yönünü kapsayacaktır. Her şeyi kapsayamazken, ana alanlara bolca zaman vereceğiz. Her durumda, bunlar her iki sunucu türünün de temel öğelerini temsil ettiğinden, sizin için doğru yazılımı seçmeye gelince, devam etmeniz gereken fazlasıyla yeterli olacaktır.
1. Bağlantı ve istek işleme
Bir sunucunun bağlantıları nasıl ele aldığını bilmek çok önemlidir çünkü bu onun 'temel para birimi'dir. Tartışılabilir, ancak insanlar Nginx'e karşı Apache'nin göreceli değerlerini tartışmaya çalıştıklarında, bağlantı yönetimi algılarda büyük bir rol oynar.
Nginx
Nginx 'eşzamansız' ve 'olay odaklı'dır, bu da birden çok isteği aynı anda işleyebileceği ve kullanılabilir kaynaklar varken bunları işleyebileceği anlamına gelir. Bir seferde binlercesini beklediği gelen bağlantıları işlemek için 'işçi süreçleri' üretir. Bunlar, sunucunun geri kalanı için 'su taşıyıcılarıdır'.
Örneğin, her çalışan süreç, süreç olaylarını ve bağlantılarını dinleyecek ve bunları sürekli bir döngüye ekleyecektir. Oradan, sunucu her olayı işleyebilir ve bittiğinde kaldırabilir. Bir Nginx sunucusunun akışı, doğal ölçeklenebilirlik sağlar ve zaman uyumsuz, engellemeyen mimari de buna hizmet eder.
Apaçi
Buna karşılık Apache, olayları bir dizi Çoklu İşlem Modülü (MPM'ler) aracılığıyla birer birer işler. Bir sistem yöneticisi, göreve en uygun bağlantı mimarisini seçer ve bunlardan birkaçı vardır.
mpm_prefork
modülü yaygın bir modüldür. Bu, her olay için alt süreçler üretir ve bir seferde yalnızca bir bağlantıyı işler. İşlem sayısı istek sayısından fazlaysa, performans açısından Nginx ile Apache arasındaki farkı söylemekte zorlanacaksınız.
Ancak, bu tür bir durum nadirdir ve bir Apache sunucusu birçok durumda işlemlerden daha fazla sayıda istek görür. Dahası, bu MPM, bellek kullanımı nedeniyle iyi ölçeklenmiyor.
PHP ile çalışanlar için mpm_prefork
, mod_php
yorumlayıcı modülüyle çalışmanın tek güvenli yoludur. Dezavantajlarına rağmen, bu, bir WordPress geliştiricisinin bir Apache sunucusuna dağıtmaları gerekip gerekmediğini seçeceği MPM olacaktır.

Ayrıca mpm_worker
ve mpm_event
modüllerini de göreceksiniz. Bunlar, benzer bir işlem gerçekleştirir ve iş parçacığı koleksiyonu başına birden çok işlem oluşturabilmeleri nedeniyle daha iyi ölçeklenir.
Bu MPM grubu, bazı durumlarda performansın dezavantajlarına rağmen Apache'nin ne kadar esnek olabileceğini gösterir.
Statik ve dinamik içerik için istek işleme
Devam etmeden önce, her sunucu yazılımı için statik ve dinamik içerikten bahsetmeliyiz. Nginx'in dinamik içeriği işleyemediğini okuyacaksınız, bu da sizi endişelendirebilir. Aslında, Nginx bu tür içeriği yerel bir şekilde işlemeyecektir. Bunun yerine, harici bir işlemciye (önbellek gibi) gönderir, ardından içeriği taşımadan önce geri dönmesini bekler.
Geliştirme için, bir sistem yöneticisi bunun için Memcached gibi bir çözüm kuracaktır. Bu yaklaşımın olumsuz yönleri vardır, yani performans üzerinde. Bununla birlikte, zincirin her bir bölümü için performans giderlerinin faydaları, bunu ortadan kaldırır. Nginx'in bu istekleri işleme konusunda endişelenmesi gerekmez, bu nedenle sorumluluk alanlarına daha verimli bir şekilde konsantre olabilir.
Apache'nin MPM sistemi, diğer modüllere ihtiyaç duymadan hem statik hem de dinamik içeriği işlemesine izin verir. Dinamik içerik için Apache, her çalışana bir dil işlemcisi yerleştirir. İyi çalışan basit bir yaklaşım. Bir değişiklik yapmanız gerekirse, modülleri de değiştirebilirsiniz.
2. Sunucuyu yapılandırma
Nginx ve Apache arasındaki daha belirgin farklardan biri, her bir sunucuyu nasıl yapılandırdığınızdır. Nginx, merkezi bir yaklaşım kullanır; bu, kullanıcının bir ana dosyanın dışında bir sunucuyu yapılandırma yolu olmadığı anlamına gelir. Bu olumsuz gibi görünse de, birçok avantajı vardır:
- Sunucu yöneticisi, bir bütün olarak sunucuya erişimi sıkılaştıran küresel güvenlikten sorumludur.
- Merkezi bir sunucu, diğer türlerden daha yüksek performansa sahiptir. Bunun nedeni, Nginx'in her dizindeki yapılandırma dosyalarını kontrol etmek için istekleri işlemesine gerek kalmamasıdır.
- Sunucu için birden fazla alandan herhangi bir geçersiz kılma olmayacağından, burada bir zincirleme etkisi vardır, bu da istek sürelerini daha da kısaltır.
Bir meslekten olmayan kişinin Apache sunucusu kullandığını bilmesinin bir yolu .htaccess
dosyalarının varlığıdır. Bunlar, sunucunuzun hemen hemen her yerine ekleyebileceğiniz yapılandırma dosyalarıdır. Apache, bir istek yapıldığında yolun her bir öğesini bir .htaccess
dosyası için kontrol eder.

Bu, sunucu bölümlerini kişiselleştirmek isteyen ancak yönergelerden biri performans veya güvenlik sorunlarına neden olursa felakete yol açabilecek kullanıcılar için harika. Bu merkezi olmayan yaklaşım, Apache'nin paylaşılan barındırmada kullanıldığını görmenizin nedenlerinden biridir. Ayrıca, WordPress gibi bir içerik yönetim sisteminin (CMS) Apache sunucularında iyi performans sunmasının bir nedenidir.
3. Yorumlama talebi
Nginx ile Apache arasındaki belirgin görünmeyen önemli bir fark, istekleri nasıl yorumladığıdır. Kısaca:
- Nginx, her bileşen için bir Tekdüzen Kaynak Tanımlayıcı (URI) kullanarak istekleri yorumlar ve eşler.
- Apache, istekleri yorumlamak için URI'leri de kullanabilir, ancak dosya tabanlı bir yol yapısını görmek daha yaygındır.
Apache her şeyden önce bir web sunucusu olduğundan, kaynakları tanımlamak için <Directory>
, <Files>
veya <Location>
bloklarını kullanır. Buradaki anahtar kavram, Apache'nin 'gördüğü' her şeyin web sunucusuyla ilgili olmasıdır, bu nedenle kaynak yolunda herhangi bir belirsizlik yoktur. Bir belge ağacı düşünün ve Apache, sunucu dosya sistemini bu şekilde 'görselleştirir'.

Buna karşılık, Nginx'in yük dengeleyici, proxy sunucusu ve web sunucusu gibi birçok kullanım durumu vardır. Bu nedenle, isteklerin Nginx'in bunları işlemesi için bir URI olarak gelmesi gerekir. Örneğin, Nginx server
ve location
bloklarını kullanır: birincisi istenen ana bilgisayarı yorumlar ve ikincisi daha sonra URI bölümleriyle eşleşir. Tüm istek bir URI olur.

Genel olarak, bir URI, Nginx için daha esnektir, çünkü gerçekleştirdiği işleve uyum sağlayabilir. Öyle olsa bile, Apache'nin sistemi, yalnızca bir web sunucusu rolünü yerine getirmesi gerektiği göz önüne alındığında çalışır.
Nginx vs Apache: 2021'de sunucunuz için hangisini seçmelisiniz?
Tümünü yakalama yanıtı, Hangi sunucu yazılımını seçmeliyim? basit: Barındırma sağlayıcınız hangisini sunuyorsa odur. Çoğu durumda, bir seçeneğiniz olmayacak. Nginx ile Apache arasında karar vermek istiyorsanız, birçok web barındırıcısının eşleştirmeniz gereken aynı modeli izlediğini fark ettik:
- Sürekli yapılandırma gerektiren bir sunucu çalıştırmak veya kullanıcılara yapılandırma seçeneği sunmak istiyorsanız, Apache faturayı karşılayacaktır.
- Ancak, süper performans, kaya gibi sağlam güvenlik sağlamak ve kullanıcılarınız yerine yapılandırmaları yönetmek istiyorsanız, ileriye giden yol Nginx'tir.
Performans söz konusu olduğunda, Apache , kendine özgü mimarisi nedeniyle daha fazla bellek kaplayabilir. Nginx, özellikle çok sayıda statik içeriği işlemesi gerekiyorsa, yüksek trafik durumlarında daha iyi olacaktır.
Bu nedenle, içeriği depolamak ve sunmak için önbelleğe almaya güveniyorsanız, Nginx en iyi seçenek olabilir. Ancak, Nginx'in dinamik içerik sunamayacağını unutmayın, bu nedenle sunucunuzun kullandığı proxy'nin verimliliğine bağlı olarak daha fazla performans düşüşü yaşarsınız.
Çözüm
Neredeyse ezici sayıda seçenek sunan birçok WordPress alanı (ve bir web sitesi çalıştıran) vardır. Bu canavarın doğasıdır. Ancak, sitenizi hızlı bir şekilde canlı hale getirmeniz gerektiğinde yardımcı olmaz.
Sunucu türü seçiminiz, ekstra özen göstermek isteyeceğiniz çok önemli ve ön planda olan bir karardır. Nginx vs Apache yaygın bir karşılaştırmadır çünkü her ikisi de belirli durumlarda fayda sağlar.
Bizim düşüncemiz, Nginx'in çoğu temeli daha yüksek performansla karşılayabileceği ve bu da onu çoğu WordPress kullanıcısı için daha iyi bir seçenek haline getiriyor. Bu nedenle popüler performans odaklı WordPress ana bilgisayarlarının çoğu, Kinsta ve Flywheel dahil olmak üzere tamamen Nginx sunucu yığınına yöneldi.
Ne olursa olsun, bu seçeneği alamazsanız ana makinenizin sunduğu her şeyi kullanmak güvenlidir ve çoğu WordPress sitesi her iki web sunucusuyla da tamamen iyi olacaktır.
Nginx ile Apache arasındaki çitin neresinde oturuyorsunuz? Aşağıdaki yorumlar bölümünde bize bildirin!