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, немає підтримки для рішень у стилі .htaccess.
Особисто мені подобається Nginx, оскільки він ефективно обслуговує статичний контент, налаштувати PHP-FPM дуже просто, і мені дуже подобається його синтаксис конфігурації. Це не чарівне вирішення проблематичних проблем, але це надійний гнучкий варіант.