Nginx kesinlikle Magento'yu barındırmak için iyi bir seçimdir ve site performansını artırmaya yardımcı olabilecek bir dizi güzel (ama küçük) fayda ile birlikte gelir.
Nginx ve Apache arasındaki temel fark, Nginx'in engellemesiz Evented IO kullanması ve Apache'nin sadece çoklu okuma / işleme kullanmasıdır. Fark nedir ve neden önemlidir? Apache durumunda, 5 iş parçacığı olduğunu varsayalım, herhangi bir zamanda bir şey için 5 istek işleyebilir. Bu iş parçacıklarından birinin tamamlanması uzun zaman alırsa, gelen diğer istekleri işlemek için yalnızca 4 iş parçacığı kalır. 5 iş parçacığının tümü kilitlenirse, bir iş bitene kadar gelen istekler işlenemez.
Bir iş parçacığı bir şey için istek aldığında Evented IO ile bir olayı başlatır ve doğrudan bir sonraki isteğe geçer. Olay geri aradığında, ilgili istemciye yanıtı iletir.
Bu kabaca asenkron javascript'in çalışma şekline benzer. Bir AJAX isteğini kaldırırsınız ve geri arama alana kadar devam edersiniz.
Bu modern yaklaşım, çok sayıda iş parçacığı veya işçi sistemi süreci ortaya çıkarmadan çok sayıda küçük statik dosyaya hizmet etmek için çok uygundur.
Nginx'in bir diğer yararı da düşük bellek alanıdır. Apache çok şey destekliyor ve bu sayede yüksek bir bellek ve hesaplamalı ayak izi var. Geri döndürebilirsiniz, ancak Nginx hafıza açısından yalın olacak şekilde sıfırdan tasarlanmıştır.
Farklılıklar çok büyük değildir, ancak binlerce talebe kadar ölçeklendirdiğinizde, toplamda bu küçük farklılıklar büyük bir fark yaratır.
Şimdi bir Magento uygulamasında en büyük performans darboğazının PHP kodunun yürütülmesi olduğunu hatırlamak önemlidir. Burada Apache ve Nginx arasında performansta temelde ihmal edilebilir bir fark var. Önemli olan PHP-FPM ve çalışan MPM'yi Apache ile kullanmak (ve kesinlikle prefork / mod-php'den kaçınmak). Bunun temel nedeni, yalnızca PHP kodunu yürütmeniz gerektiğinde bir PHP yorumlayıcısı çağırmanız ve APC gibi op kodu önbellekleme yazılımını etkili bir şekilde kullanabilmenizdir (ve bu, alacağınız en büyük performans artışıdır).
Yapılması gereken son nokta: bazı modüller / uygulamalar Apache'nin kullanılmasını beklemektedir ve belgeler ModRewrite veya .htaccess dosyalarının kullanımına yönelik olabilir. Nginx'te ModRewrite stil desteği olsa da, dizin başına .htaccess stil çözümleri için destek yoktur.
Şahsen, Nginx'i seviyorum çünkü statik içeriği verimli bir şekilde sunuyor, PHP-FPM'yi kurmak çok kolay ve yapılandırma sözdizimini oldukça beğendim. Performans sorunlarına sihirli bir mermi çözümü değildir, ancak dikkate alınması gereken sağlam esnek bir seçenektir.