Nginx ve Apache: En İyi Web Sunucusu Hangisi? (2023)
Pek çok farklı türde sunucu yazılımı olsa da, yarışmacıları genellikle Nginx ve 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 uygun olmasıdır.
Yine de, bunlardan hangisinin ihtiyaçlarınız için daha anlamlı olduğunu düşünmek isteyeceksiniz. İşletim sistemi (OS) desteği, güvenlik, dokümantasyon ve (elbette) performans gibi incelenecek birkaç farklı kategori vardır.
Bu yazı 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 seçmeniz için gereken bilgileri vereceğiz.
Nginx ve Apache ile tanışın
Her sunucu türünün ayrıntılı ayrıntılarına girmeden önce, size hem Nginx hem de Apache’nin özetini verelim. Bir sonraki bölüme geçtiğimizde, her ikisinin de bazı kullanım durumlarını ve onları ‘vahşi’ nerede görebileceğinizi öğreneceksiniz.
Nginx

Apache ile karşılaştırıldığında, Nginx (telaffuz edilen “motor X”), sunucu tarafı teknolojisi dünyasında nispeten yenidir. Ancak geliştirme ekibi, Apache sistemlerinin sınırlamalarını genişletme görevini üstlendi.
Bu, birçok kullanıcının kararlılığı ve ölçeklenebilirliği için düşündüğü açık kaynaklı bir çözümdür. Bu (kısmen) olay odaklı mimarisine bağlıdır – daha sonraları. Aslında, ilk Nginx sürümünün amacının bir kısmı, 10.000 bağlantıyı yönet bir kerede. Bu, o zamanlar hızla genişleyen web nedeniyle 2004’te gerekli olan bir şeydi.
Genel olarak, sistem yöneticileri ve site sahipleri Nginx’i sever çünkü performansı yüksektir, statik dosyalarla harika çalışır ve yük dengeleyici ve ‘ters proxy’ işlevlerini yerine getirir. Bunların tümü çalışma süresi, hız ve güvenlikle ilgilidir.
Apaçi

Apaçi bir şekilde web sunucusu teknolojisinin ‘yaşlı adamı’ dır. Neredeyse web’in kendisi kadar eskidir – 1995’ten itibaren Apache, milyonlarca olmasa da binlerce sunucunun çekirdeğindeki yazılım olmuştur.
Apache, uzun bir süredir ‘sistem yöneticileri’ arasında baskın bir teknoloji olmuştur. Bunun pek çok nedeni var – bazıları performansla ilgili, diğerleri ise alışkanlıktan kaynaklanıyor. 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 kullanmasına rağmen yine de güç, ölçeklenebilirlik ve harika belgeler sunar.
Pek çok sistem yöneticisi, Apache’nin özelleştirilebilir doğasını ve çeşitli modülleri yükleyerek bir sunucuyu nasıl kendinize ait hale getirebileceğinizi de sever.
Nginx ve Apache için genel kullanım durumları
Konu web sitelerine hizmet vermek olduğunda Apache’nin “her işin uzmanı” 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 düşük performanslı kod pahasına olur. Yaş burada bir faktördür.
Apache, web sunucuları için daha gelişmiş uygulamalardan bazılarına sahip olmadan önce geldiği için, kod tabanı modern web sitelerine hizmet vermek için gerekeni yapamadı. Bu sorunlar mutlaka bir endişe nedeni olmasa da şimdiNginx gibi bir çözüm, modern web düşünülerek çalışır.
Bu nedenle, paylaşılan barındırma gibi uygulamalar için yapılandırması kolay bir sunucu olarak Apache’nin harika olduğunu göreceksiniz. Entegrasyonları ayrıca Linux, Apache’nin bir parçası olarak yerel geliştirme sunucusu yazılımı olarak kullanıldığını görüyor. MySQLve PHP (LAMBA) yığını.

Buna karşılık, Nginx, Apache’ye kıyasla daha fazla düzene sahip, daha olgun 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, onun çekirdeğine daha az erişeceğiniz anlamına gelir.
Dahası, Apache ile aynı şekilde modüler değildir, bu da onu sunucu özelleştirmesi gerçekleştirmeniz gereken durumlar için daha az uygun hale getirir.
Nginx ve Apache: Her sunucu türü ne kadar popüler?
Uzun bir süre boyunca, sunucu yazılımı tek atlı bir yarışa benziyordu. Apache bir olarak çalıştı baskın güç birkaç yıldır ve hala büyük bir pazar payına sahip. Bu nedenle, birinci sınıf belgelerle birlikte Apache sunucuları için birçok 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 bir sunucu yazılımıdır. büyük pazar payı kendi. Nginx kullanımında zaman içinde yavaş bir artış var, öyle ki artık çok fazla olmasa da piyasadaki en baskın web sunucusu teknolojisi haline geldi.
İleriye baktığımızda, Nginx sistem yöneticilerinin bir web sunucusunda ihtiyaç duyduğu birçok şeyi sağladığından, Apache’nin zamanla daha az kullanıldığını görecektir. Yine de, LiteSpeed Web Sunucusu ve Cloudflare Sunucusu ufukta görünüyor 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 daha genç yeni başlayanlardan biriyle karşılaştırabilir.
Nginx ve Apache: Özelliklerin ve işlevlerin teknik dökümü
Sonraki birkaç bölüm, Nginx ve Apache’nin bir dizi teknik yönünü kapsayacaktır. Her şeyi kapsayamasak da, ana alanlara bolca zaman ayıracağız. Her durumda, bunlar her iki sunucu türünün temel unsurlarını temsil ettiğinden, sizin için doğru yazılımı seçmek söz konusu olduğunda devam etmeniz için fazlasıyla yeterli olacaktır.
1. Bağlantı ve istek yönetimi
Bir sunucunun bağlantıları nasıl ele aldığını bilmek çok önemlidir, çünkü bu onun ‘temel para birimidir’. Tartışılabilir, ancak insanlar Nginx ve Apache’nin göreceli değerlerini tartışmak istediklerinde, bağlantı yönetimi algılarda büyük bir rol oynar.
Nginx
Nginx “eşzamansız” ve “olay güdümlü”dür, yani aynı anda birden çok isteği işleyebilir ve kullanılabilir kaynaklar varken bunları işleyebilir. Her seferinde binlercesini beklediği gelen bağlantıları işlemek için ‘işçi süreçleri’ oluşturur. Bunlar, sunucunun geri kalanı için ‘su taşıyıcılarıdır’.
Örneğin, her çalışan işlem, işlem 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ışı, içsel ölçeklenebilirlik sağlar ve zaman uyumsuz, engellemeyen mimari de buna hizmet eder.
Apaçi
Buna karşılık, Apache olayları bir dizi işlem aracılığıyla birer birer işler. Çoklu İşleme Modülleri (MPM’ler). Bir sistem yöneticisi, birkaç tane olan göreve en uygun bağlantı mimarisini seçecektir.
bu mpm_prefork
modül yaygın bir modüldür. Bu, her olay için alt süreçler oluşturur ve aynı anda 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 zorlanabilirsiniz.
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
ile çalışmanın tek güvenli yoludur. mod_php
tercüman modülü. Dezavantajlara rağmen, bu, bir WordPress geliştiricisinin bir Apache sunucusuna dağıtmak zorunda kalması durumunda seçeceği MPM olacaktır.
ayrıca göreceksin mpm_worker
ve mpm_event
modüller de. 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österiyor.
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şleyemeyeceğ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, onu harici bir işlemciye (önbellek gibi) gönderecek ve ardından içeriği taşımadan önce geri dönmesini bekleyecektir.
Geliştirme için bir sistem yöneticisi bir çözüm oluşturacaktır Memcached gibi bunun için. Bu yaklaşımın olumsuz yönleri vardır, yani performans açısından. Ancak, zincirin her bir bölümü için performans genel giderlerinin faydaları bunu geçersiz kılar. Nginx’in bu istekleri işleme koyma konusunda endişelenmesine gerek yoktur, 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 ile Apache arasındaki en belirgin farklardan biri, her sunucuyu nasıl yapılandırdığınızdır. Nginx, merkezi bir yaklaşım kullanır; bu, kullanıcının bir sunucuyu tek bir ana dosya dışında yapılandırmasının hiçbir 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 etme isteklerini işlemesine gerek kalmayacak olmasıdır.
- Birden fazla alandan sunucu için herhangi bir geçersiz kılma olmayacağından, istek sürelerini daha da düşük tutacağından, burada zincirleme bir etki vardır.
Profesyonel olmayan bir kişinin bir Apache sunucusu kullandığını bilmesinin bir yolu, .htaccess
Dosyalar. Bunlar, sunucunuzun hemen hemen her yerine ekleyebileceğiniz yapılandırma dosyalarıdır. Apache, bir yolun her öğesini bir .htaccess
bir istek yapıldığında dosya.

Bu, sunucunun kendi bölümünü 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 harikadır. Bu merkezi olmayan yaklaşım, paylaşılan barındırmada Apache’nin 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 nedeni de budur.
3. Yorum talep edin
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ısı (URI) kullanarak istekleri yorumlar ve eşler.
- Apache, istekleri yorumlamak için URI’leri de kullanabilir, ancak dosya tabanlı bir yol yapısı görmek daha yaygındır.
Apache her şeyden önce bir web sunucusu olduğundan, <Directory>
, <Files>
veya <Location>
kaynakları tanımlamak için bloklar. Buradaki anahtar kavram, Apache’nin ‘gördüğü’ her şeyin web sunucusuyla ilgili olmasıdır, bu nedenle kaynak yolunda hiç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, Nginx’in bunları işlemesi için isteklerin bir URI olarak gelmesi gerekir. Örneğin, Nginx’in kullandığı server
ve location
bloklar: ilki 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ü yürüttüğü işleve uyum sağlayabilir. Buna rağmen, Apache’nin sistemi, yalnızca bir web sunucusu rolünü yerine getirmesi gerektiği düşünülürse çalışır.
Nginx ve Apache: 2023’te sunucunuz için hangisini seçmelisiniz?
Tümünü yakalama yanıtı, Hangi sunucu yazılımını seçmeliyim? basittir: Barındırma sağlayıcınız hangisini sunuyorsa odur. Birçok durumda, bir seçeneğiniz olmayacak. Nginx ve Apache arasında karar vermek istiyorsanız, birçok web barındırıcısının eşleştirmeniz gereken kalıbı izlediğini fark ettik:
- Sürekli yapılandırma gerektiren bir sunucu çalıştırmak istiyorsanız veya kullanıcılara bir yapılandırma seçeneği sunmak istiyorsanız, Apache tam size göre.
- Ancak, süper performans, sağlam güvenlik sağlamak ve kullanıcılarınız yerine yapılandırmalarla ilgilenmek istiyorsanız, Nginx ileriye giden yoldur.
Performans söz konusu olduğunda, Apache olabilmek doğal mimarisi nedeniyle daha fazla bellek kaplar. Nginx, yüksek trafik durumlarında, özellikle de çok sayıda statik içeriği işlemesi gerekiyorsa, 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 artışı alırsı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ı olmuyor.
Sunucu türü seçiminiz, üzerinde daha fazla özen göstermek isteyeceğiniz çok önemli ve ön planda bir karardır. Nginx ve Apache, ortak bir karşılaştırmadır çünkü her ikisi de belirli durumlarda fayda sağlar.
Görüşümüze göre Nginx, çoğu temeli daha yüksek performansla kapsayabilir, bu da onu çoğu WordPress kullanıcısı için daha iyi bir seçenek haline getirir. Bu nedenle, Kinsta ve Flywheel dahil olmak üzere performans odaklı popüler WordPress ana bilgisayarlarının çoğu tamamen Nginx sunucu yığınına geçti.
Ne olursa olsun, bu seçeneğe sahip değilseniz, ev sahibinizin sunduğu her şeyi kullanmakta güvendesiniz ve çoğu WordPress sitesi her iki web sunucusunda da tamamen iyi olacaktır.