Nginx jest zdecydowanie dobrym wyborem do hostowania Magento i oferuje wiele fajnych (ale niewielkich) korzyści, które mogą pomóc poprawić wydajność strony.
Główną różnicą między Nginx a Apache jest to, że Nginx używa nieblokowanego Evented IO, a Apache po prostu używa wielowątkowości / przetwarzania. Jaka jest różnica i dlaczego ma to znaczenie? Cóż, w przypadku Apache, powiedzmy, że ma 5 wątków, może obsłużyć 5 żądań o coś w danym momencie. Jeśli jeden z tych wątków zajmuje dużo czasu, pozostają tylko 4 wątki, aby obsłużyć dalsze przychodzące żądania. Jeśli wszystkie 5 wątków zostanie zablokowanych, żadne przychodzące żądania nie będą obsługiwane, dopóki jeden się nie zakończy.
Dzięki Evented IO, gdy wątek otrzyma żądanie czegoś, odpala zdarzenie i przechodzi bezpośrednio do następnego żądania. Kiedy zdarzenie oddzwania, przekazuje odpowiedź odpowiedniemu klientowi.
Jest to mniej więcej podobne do działania asynchronicznego javascript. Odpowiadasz na żądanie AJAX i kontynuujesz do momentu otrzymania oddzwonienia.
To nowoczesne podejście dobrze nadaje się do obsługi wielu małych plików statycznych bez konieczności generowania dużej liczby wątków lub procesów systemu roboczego.
Inną zaletą Nginx jest niski poziom pamięci. Apache obsługuje wiele rzeczy, a przy tym ma wysoką pamięć i ślad obliczeniowy. Możesz go przywrócić, ale Nginx został zaprojektowany od podstaw, aby był szczupły pod względem pamięci.
Różnice nie są ogromne, ale w miarę skalowania do wielu tysięcy żądań, te małe różnice, łącznie, robią dużą różnicę.
Teraz należy pamiętać, że największym wąskim gardłem w wydajności aplikacji Magento jest wykonanie kodu PHP. Tutaj jest zasadniczo nieistotna różnica w wydajności między Apache i Nginx. Ważną rzeczą jest użycie PHP-FPM oraz MPM-a roboczego z Apache (i zdecydowanie unikać prefork / mod-php). Głównym powodem jest to, że wywołujesz interpretera PHP tylko wtedy, gdy potrzebujesz wykonać kod PHP, i możesz efektywnie korzystać z oprogramowania buforującego op-code, takiego jak APC (i to jest jedyny największy wzrost wydajności, jaki uzyskasz).
Ostatni punkt do zrobienia: niektóre moduły / aplikacje oczekują użycia Apache, a dokumentacja może być ukierunkowana na użycie ModRewrite lub użycie plików .htaccess. Chociaż w Nginx dostępna jest obsługa stylu ModRewrite, nie ma obsługi rozwiązań w stylu .htaccess dla poszczególnych katalogów.
Osobiście podoba mi się Nginx, ponieważ skutecznie obsługuje zawartość statyczną, bardzo łatwo jest skonfigurować PHP-FPM i bardzo podoba mi się jego składnia konfiguracji. To nie jest magiczne rozwiązanie problemów z wydajnością, ale jest to solidna, elastyczna opcja do rozważenia.