Nginx, безусловно, является хорошим выбором для хостинга Magento, и он имеет ряд приятных (но небольших) преимуществ, которые могут помочь повысить производительность сайта.
Основное различие между Nginx и Apache заключается в том, что Nginx использует неблокирующий Evented IO, а Apache просто использует многопоточность / обработку. В чем разница и почему это важно? Хорошо, в случае с Apache, скажем, он имеет 5 потоков, он может обрабатывать 5 запросов на что-либо в любой момент времени. Если один из этих потоков занимает много времени, остается только 4 потока для обработки любых дальнейших входящих запросов. Если все 5 потоков заблокированы, то никакие входящие запросы не могут быть обработаны, пока один из них не завершится.
С Evented IO, когда поток получает запрос на что-то, он запускает событие и сразу переходит к следующему запросу. Когда событие перезванивает, оно передает ответ соответствующему клиенту.
Это примерно похоже на то, как работает асинхронный JavaScript. Вы запускаете запрос AJAX и продолжаете, пока не получите обратный вызов.
Этот современный подход хорошо подходит для обслуживания большого количества небольших статических файлов без дополнительных затрат на создание большого количества потоков или рабочих процессов системы.
Еще одним преимуществом Nginx является его низкий объем памяти. Apache поддерживает много вещей, и при этом имеет большой объем памяти и вычислительных ресурсов. Вы можете сократить его, но Nginx спроектирован с нуля, чтобы быть скудным с точки зрения памяти.
Различия невелики, но по мере того, как вы масштабируете многие тысячи запросов, эти небольшие различия в совокупности имеют большое значение.
Теперь важно помнить, что самым большим узким местом производительности в приложении Magento является выполнение кода PHP. Здесь есть в основном незначительная разница в производительности между Apache и Nginx. Важно использовать PHP-FPM и рабочий MPM с Apache (и, безусловно, избегать prefork / mod-php). Основная причина заключается в том, что вы вызываете интерпретатор PHP только тогда, когда вам нужно выполнить код PHP, и вы можете эффективно использовать программное обеспечение для кэширования кода операции, такое как APC (и это единственный самый большой прирост производительности, который вы получите).
Последнее замечание: некоторые модули / приложения ожидают, что Apache будет использоваться, и документация может быть ориентирована на использование ModRewrite или использование файлов .htaccess. Хотя в Nginx есть поддержка стилей ModRewrite, поддержка стилевых решений для каждого каталога не поддерживается.
Лично мне нравится Nginx, потому что он эффективно обслуживает статический контент, очень легко настроить PHP-FPM и мне очень нравится его синтаксис конфигурации. Это не волшебное решение проблем с производительностью, но надежный и гибкий вариант для рассмотрения.