Nginx vs Apache'yi ters proxy olarak seçmek


36

Bu tür bir soru belki burada istendi ama sorumla gerçekten eşleşen hiçbir şey bulamadım. Nginx performansının oldukça etkileyici olduğunu duydum, ancak Apache'nin yardım almak için daha fazla dokümanı, topluluğu (okuma: uzmanı) var

Şimdi bilmek istediğim, her iki web sunucusunun da performans, yapılandırma kolaylığı, özelleştirme düzeyi vb. Bir vps ortamında TERS PROXY sunucusu olarak?

Ben hala ikisi ile tartıyorum yakut bir web uygulaması (ROR değil) ince ile sunulan (yakut web sunucusundan biri).
Özel cevap çok takdir edilecektir. Genel cevap yakut kısmına dokunmamak sorun değil. Web sunucusu yönetiminde hala noob.


Martin ve webdestroya için tnx cevaplar, şimdi nginx'e yaslanıyorum
mhd

Cila gibi özel olarak tasarlanmış bir ters proxy ile gitmek daha mantıklı olmaz mıydı?
ptman

Yanıtlar:


31

Webdestroyas'ın cevabındaki en önemli noktaya katıldığım için bunu bir yorumda bulunmak istedim, ancak çok uzun sürdü.

Bir VPS ortamındasınız, bu büyük olasılıkla RAM'de düşük olacağınız anlamına geliyor. Bu nedenle tek başına Nginx'i istersiniz çünkü hafıza alanı Apaches'ten daha küçüktür.

Ayrıca belirtilen bazı argümanlara katılmıyorum.

Yapılandırma Kolaylığı:
Nginx, Apache'den daha zor değil. Bu farklı. Apache'ye alışkınsanız, değişiklik her zaman daha zor olacaktır, bu, yapılandırma stilinin kendisinin daha zor olduğu anlamına gelmez. Bir yıl önce tamamen Apache'den Nginx'e geçtim ve bugün bir Apache sunucusunu yapılandırmak için mücadele ederken Nginx'i yapılandırması çok kolay buluyorum.

Ruby için:
Nginx'de Yolcu var, ancak genellikle Ruby'ye bağlanmak için aşağı yöntem olarak tanımlandığını görüyorum. Bir Ruby programcısı değilim, bu yüzden bunu doğrulayamıyorum ama Unicorn ve Thin'in daha iyi alternatifler olarak bahsettiğini sık sık görüyorum.

Sonuç olarak:
Nginx ters bir vekil olmak için yapılmıştır. Başlangıçta tüm yaptığı statik dosyalar ve proxy HTTP / 1.0 üzerinden bir arka uç sunucuya ters oldu. O zamandan beri fastcgi, yük dengeleme ve çeşitli diğer özellikler eklendi, ancak ilk tasarım amacı statik dosyalara hizmet vermek ve proxy'yi tersine çevirmekti. Ve bunu gerçekten çok iyi yapıyor.

Apache, aksine genel amaçlı bir web sunucusudur. Proxy'yi mükemmel bir şekilde tersine çevirebileceği konusunda hiçbir şüphem yok, ancak minimum bellek alanı kaplayacak şekilde tasarlanmadı ve sonuç olarak Nginx'ten daha fazla kaynak gerektiriyordu, bu da benim ilk VPS ortamımın argümanının devreye girdiği anlamına geliyor.


Açıklama için +1.
John Gardeniers

Ben kendi web sunucusu olarak tavsiye kadar ileri giderdim. yorumlarıma bakın serverfault.com/questions/133481/… <- burada. VPS'imdeki tek web sunucusu olarak kullanıyorum ve diğer kullanıcıları FastCGI ile PHP / CGI uygulamaları için kullanmaya başladım.
Jason,

Jason Bir yıldan fazla bir süredir tek web sunucum olarak kullanıyorum ve günde milyonlarca sayfa yükünü yönetiyor. Tavsiyene tamamen katılıyorum! :)
Martin Fjordvald

8

Performans:
NGinX. Bu sunucunun en iyi performans gösteren web sunucularından biri olduğu biliniyor ve birçok farklı şirket tarafından kullanılıyor (Notable, MediaTemple)

Yapılandırma Kolaylığı:
Apache. Apache'nin yapılandırması gerçekten basit ve gerçekten güçlü. Nginx güçlüdür, ancak bir yapılandırma dosyasından çok bir programlama dili gibi göründüğü gibi anlaşılması çok zor olabilir.

Özelleştirme Seviyesi:
Apache. Apache'de tonlarca mod ve başka eklentiler var. Nginx'in hala eklentileri yapılmış olsa da, Apache'nin Nginx'ten çok daha fazlasına sahip olduğunu düşünüyorum.

Ruby için:
Nginx'in Mongrel / webrick ile güçlü bir yük dengeleyicisi olarak kullanılabileceğini biliyorum. Ancak Apache, entegrasyonu daha iyi yapan Phusion / Passenger'a sahiptir.

Ters Proxy Kazanan:
NGinX


2
Ben ilgilenmiyorum, tartışmıyorum. Nginx neden ters proxy için kazanıyor? Cevabınızın geri kalanı gerçekten biri diğerinden öne çıkmaz. Bir şey varsa Apache'yi tercih etme eğilimindedir.
John Gardeniers

1
Çünkü, çoğu zaman, yüksek yük nedeniyle ters bir vekil istiyorsunuz. Bu, performansın muhtemelen en büyük sorun olduğu anlamına gelir; bu durumda Nginx galibi oldu ve bu yüzden seçtim. Bir geliştirici olarak, apache'yi seviyorum, ancak "bu web sunucusundan en iyi performansı nasıl alabilirim?" Noktasından itibaren, Nginx
Mitch Dempsey

8

Nginx olay tabanlıdır, apache ise süreç tabanlıdır. Yüksek yük altında, bu dünyadaki bütün farkı yaratır ... Apache'nin her bağlantı için çatallanması veya yeni bir iplik başlatması gerekirken, nginx yapmaz. Bu fark temel olarak bellek kullanımında değil, aynı zamanda kullanıcı yanıtlama süresi ve diğer performans ölçümlerinde de görülür. Nginx, modern donanım üzerinde on binlerce eşzamanlı HTTP sürekli bağlantıyı yönetebilir . Apache her bağlantı için 1-2 MB yığın kullanır, bu nedenle gördüğünüz matematiği değiştirerek eşzamanlı olarak çalışmaya başlamadan aynı anda yalnızca birkaç yüz veya belki binlerce bağlantıyı idare edebileceğinizi görürsünüz.

Ortamımızda Apache ve IIS'nin önünde nginx'i yük dengeleme ve önbellekleme proxy'si olarak kullanıyoruz ve daha mutlu olamazdık. Bir çift çok pahalı kiralık F5 cihazının yerine iki adet küçük iş parçalı nginx kutusu kullanıyoruz ve sitelerimiz hem his hem de ölçülen tepki sürelerinde çok daha hızlı.


1

İki hafta önce sizinle aynı ikilemdeydim.

Size çok özlü bir cevap vermek için: Araştırmalarımdan nginx gerçekten hızlı ve kaynak dostu, ancak yalnızca proxy statik dosyalarını tersine çevirmek için tasarlandı. Gerisi, kendi yolunuzu yapılandırmanız veya kodlamanız gereken çözümlere bağlanır.

AFAIK nginx'in htaccess dosyaları yoktur, bu yüzden bu özelliğe bağlı olarak yolunuzu bulmanız gerekir.

AFAIK'ta her şey gerekli ve öğreticiler gördüm.

Test ve profil oluşturma kurulumumla nginx ile gideceğim. Tipik bir LAMP uygulamasına sahibim.

Proxy'yi tersine çeviren ve statik dosyaları nginx'ten sunan ve PHP gibi her şeyi çalışan bir Apache örneğine ileten insanlar olduğunu okudum. İyi bir tradeoff iddia ediyorlar. Bununla ilgili performans verilerim yok, ancak bilmek isteyebilirsiniz.


2
Performans nedenleriyle htaccess geçersiz kılmalarını apache'de devre dışı bırakmak oldukça yaygındır, böyle bir özelliği yüksek performans için tasarlanmış bir sunucuda desteklemek pek mantıklı olmaz.
Theotherr

Bu ifadeyi eklediğiniz için teşekkür ederiz. OP yanlısı bir yönetici değil, bu yüzden açık olmamız gerekiyor.
konuşlandırma anahtarı

1

Son birkaç yıl içinde Apache'nin mod_proxy'sinde farklı ortamlarda çeşitli platformlarda ciddi problemler yaşadım. Zaman zaman, sadece çalışmayı durduracak ve tek tedavi Apache sunucusunu yeniden başlatmak gibi görünüyor.

Şahsen, ben "nginx vs Apache", ama "nginx vs lighttpd" diye sormuyorum - ve bu çok daha zor bir çağrı!


Geçerli bir tartışma, ancak en son kontrol ettiğimde, lighttpd hala uzun zamandır devam eden hatalara sahipti ve bellek sızıntıları için yeniliyordu. Yöneticilerin üretim dağıtımına karşı önerildi. Bu değişti mi?
konuşlandırma anahtarı

Kesinlikle, uyarısı var (özellikle nerede çok büyük dosyalar sunması), ama bir proxy olarak Apache göre anlamlı daha kararlı - Ben son altı ayda birkaç dağıtımlarda hiçbir gerçek sorunları yaşadım
Mo

Bazı unutulmuş sebeplerden dolayı lighttpd'yi aday listesinden
yazdım
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.