Nginx est certainement un bon choix pour l'hébergement de Magento, et il présente un certain nombre d'avantages (mais petits) intéressants qui peuvent aider à améliorer les performances du site.
La principale différence entre Nginx et Apache est que Nginx utilise des E / S événementielles non bloquantes, et Apache utilise uniquement le multithreading / traitement. Quelle est la différence et pourquoi est-ce important? Eh bien dans le cas d'Apache, disons qu'il a 5 threads, il peut gérer 5 demandes pour quelque chose à tout moment. Si l'un de ces threads prend du temps à se terminer, il ne reste que 4 threads pour gérer les demandes entrantes supplémentaires. Si les 5 threads sont verrouillés, aucune demande entrante ne peut être traitée avant la fin d'une.
Avec Evented IO lorsqu'un thread reçoit une demande pour quelque chose, il déclenche un événement et passe directement à la demande suivante. Lorsque l'événement rappelle, il transmet ensuite la réponse au client concerné.
Ceci est à peu près similaire au fonctionnement du javascript asynchrone. Vous lancez une demande AJAX et continuez jusqu'à ce que vous obteniez un rappel.
Cette approche moderne est bien adaptée pour desservir de nombreux petits fichiers statiques sans avoir à générer de nombreux threads ou processus système de travail.
L'autre avantage de Nginx est sa faible empreinte mémoire. Apache prend en charge BEAUCOUP de choses et, ce faisant, a une mémoire élevée et une empreinte de calcul élevée. Vous pouvez le réduire, mais Nginx est conçu à partir de zéro pour être maigre en termes de mémoire.
Les différences ne sont pas énormes, mais lorsque vous augmentez la taille de plusieurs milliers de demandes, ces petites différences, dans l'ensemble, font une grande différence.
Maintenant, il est important de se rappeler que le plus gros goulot d'étranglement des performances dans une application Magento est l'exécution de code PHP. Ici, il existe une différence de performances fondamentalement négligeable entre Apache et Nginx. L'important est d'utiliser PHP-FPM et le MPM de travail avec Apache (et certainement éviter prefork / mod-php). La raison principale est que vous n'appelez un interpréteur PHP que lorsque vous avez besoin d'exécuter du code PHP, et vous pouvez utiliser efficacement un logiciel de mise en cache de code op comme APC (et c'est le plus gros coup de pouce que vous obtiendrez).
Dernier point à souligner: certains modules / applications s'attendent à ce qu'Apache soit utilisé et la documentation peut être adaptée à l'utilisation de ModRewrite ou à l'utilisation de fichiers .htaccess. Bien qu'il existe un support de style ModRewrite dans Nginx, il n'y a pas de support pour les solutions de style .htaccess par répertoire.
Personnellement, j'aime Nginx car il sert efficacement du contenu statique, il est très facile de configurer PHP-FPM et j'aime beaucoup sa syntaxe de configuration. Ce n'est pas une solution miracle aux problèmes de performances, mais c'est une option flexible robuste à considérer.