Apache vs Nginx

Katılım
5 Mart 2014
Mesajlar
5.701
Makaleler
12
Çözümler
44
Günümüzde Apache ve Nginx ön plana çıkan 2 ücretsiz web sunucusu. Şu anda Apache kullanıyorum fakat Apache, bazı modern teknolojileri desteklemiyor. Mesela HTTP/3 desteği bulunmuyor. Nginx daha yenilikçi bir model. Sizce nginx sistemine geçiş yapmalı mıyım? Farklar nelerdir? Siz hangisini kullanıyorsunuz veya ikisini de denediyseniz deneyimlerinizi aktarır mısınız?
 
Günümüzde Apache ve Nginx ön plana çıkan 2 ücretsiz web sunucusu. Şu anda Apache kullanıyorum fakat Apache, bazı modern teknolojileri desteklemiyor. Mesela HTTP/3 desteği bulunmuyor. Nginx daha yenilikçi bir model. Sizce nginx sistemine geçiş yapmalı mıyım? Farklar nelerdir? Siz hangisini kullanıyorsunuz veya ikisini de denediyseniz deneyimlerinizi aktarır mısınız?


Nginx daha iyi görünüyor gibi.
 
Nginx all in one cozum gibi bir sey. Cok fazla ozelligi var ve cogu proje icin bu ozellikler overkill. Ama endustri standardi seviyesinde bir tool ve kullanmayi ogrenmek yararli olur. Ayrica oldukca hafif olmasi gibi bir artisida var.

Loadbalancing, reverse proxy, content cache, TCP/UDP proxy server ve mail proxy server olarak kullanabiliyorsun.

Nginx event-driven bir modele sahip. Apache MPM (Multi-processing module) kullaniyor.

Apache'nin uc MPM modu var. Prefork, Worker, Event-driven.
Prefork modunda process per connection kullanir. Bir process havuzu vardir, ve bu process havuzundaki processleri kullanarak yanit verir. Eger process havuzundan daha fazla istek gelirse ve yanit verecek process yoksa, config'e bagli olarak yeni process yaratabilir veya baglantiyi bekletebilir.

Worker modunda worker processler olusturur ve bu worker processler'in icerisinde thread havuzu kullanir. Thread per connection kullaniyor bu modda. Ancak [Worker -> [Thread, Thread, ...], Worker -> [Thread, Thread, ...], ...] seklinde ilerliyor sema biraz daha. Process havuzunda oldugu gibi, mevcut threadleri kullanarak yanit verecek. Eger havuzdaki thread sayisindan fazla baglanti gelirse yeni thread olusturabilir yada baglantiyi bekletebilir.

Guncel uygulamalarda genel olarak en verimli mod event-driven mod. Bi event-loop'ta asenkron I/O ile islemleri yonetiyor. Dolayisiyla tek bir thread ile binlerce baglantiyi yonetebilirken eger yuk fazlalasirsa yeni bir event loop threadi yaratabilir, gereken agir islemler icin ayri thread/process edebilir yada baglantiyi isleyecek baska biri varsa ona gonderebilir. (CGI gibi) Worker moddaki gibi, ana process config'de belirtilen sayi kadar worker cagirir ve bu workerlar genelde tek thread'de calisir.

Nginx varsayilan olarak event-driven modda. Bunu goze alarak gelistirildi. Dolayisiyla cok daha dusuk bir memory footprint'ine sahip. Ve daha hizli genel itibariyle. Ek olarak sahip oldugu tumlesik ozelliklerde, gerektiginde hizlica bir seyleri deploy etmeye yardimci oluyor. Dolayisiyla nginx tavsiye ederim.

Eksik anlattigim bir sey var mi bilmiyorum.

Benim tercihim nginx'ten yana olur.
 
Günümüzde Apache ve nginx ön plana çıkan 2 ücretsiz web sunucusu. Şu anda Apache kullanıyorum fakat Apache, bazı modern teknolojileri desteklemiyor. Mesela HTTP/3 desteği bulunmuyor. Nginx daha yenilikçi bir model. Sizce nginx sistemine geçiş yapmalı mıyım? Farklar nelerdir? Siz hangisini kullanıyorsunuz veya ikisini de denediyseniz deneyimlerinizi aktarır mısınız?

Nginx + Apache reverse proxy yap, statikleri nginx, dinamikleri Apache ile yönetirsin. Ama tek seçim hakkı olacaksa nginx tek geçerim.
 
Nginx + Apache reverse proxy yap, statikleri Nginx, dinamikleri Apache ile yönetirsin. Ama tek seçim hakkı olacaksa Nginx tek geçerim.
Bir diğer seçim hakkı da kendi yazılımını geliştirmek. Basit bir web sunucusu kodlayıp PHP entegrasyonu yapmak ve ardından SSL sertifikası eklemek güzel bir fikir gibi duruyor.
 

Technopat Haberler

Yeni konular

Geri
Yukarı