Nginx ist definitiv eine gute Wahl für das Hosting von Magento. Es bietet eine Reihe nützlicher (aber kleiner) Vorteile, die zur Verbesserung der Site-Leistung beitragen können.
Der Hauptunterschied zwischen Nginx und Apache besteht darin, dass Nginx nicht blockierende Evented IO verwendet und Apache nur Multithreading / Verarbeitung verwendet. Was ist der Unterschied und warum ist es wichtig? Nun, im Fall von Apache, sagen wir, es hat 5 Threads, es kann 5 Anfragen für etwas zu einem bestimmten Zeitpunkt bearbeiten. Wenn einer dieser Threads lange dauert, sind nur noch 4 Threads für die Bearbeitung weiterer eingehender Anforderungen verfügbar. Wenn alle 5 Threads gesperrt sind, können keine eingehenden Anforderungen bearbeitet werden, bis einer abgeschlossen ist.
Mit Evented IO löst ein Thread, wenn er eine Anforderung für etwas empfängt, ein Ereignis aus und fährt direkt mit der nächsten Anforderung fort. Wenn das Ereignis zurückruft, leitet es die Antwort an den entsprechenden Client weiter.
Dies ähnelt in etwa der Funktionsweise von asynchronem Javascript. Sie lösen eine AJAX-Anfrage aus und fahren fort, bis Sie einen Rückruf erhalten.
Dieser moderne Ansatz eignet sich gut zum Bereitstellen vieler kleiner statischer Dateien, ohne dass dabei viele Threads oder Worker-System-Prozesse erzeugt werden müssen.
Der andere Vorteil von Nginx ist der geringe Speicherbedarf. Apache unterstützt VIELE Dinge und hat dabei einen hohen Speicher- und Rechenaufwand. Sie können es zurückschreiben, aber Nginx wurde von Grund auf neu entwickelt, um hinsichtlich des Speichers schlank zu sein.
Die Unterschiede sind nicht riesig, aber wenn Sie auf viele Tausend Anfragen hochskalieren, machen diese kleinen Unterschiede insgesamt einen großen Unterschied.
Jetzt ist es wichtig, sich daran zu erinnern, dass der größte Leistungsengpass in einer Magento-Anwendung die Ausführung von PHP-Code ist. Hier gibt es einen grundsätzlich vernachlässigbaren Leistungsunterschied zwischen Apache und Nginx. Das Wichtigste ist, PHP-FPM und das Worker-MPM mit Apache zu verwenden (und auf jeden Fall Prefork / Mod-PHP zu vermeiden). Der Hauptgrund ist, dass Sie einen PHP-Interpreter nur aufrufen, wenn Sie PHP-Code ausführen müssen, und Sie können Op-Code-Caching-Software wie APC effektiv verwenden (und dies ist der größte Leistungsschub, den Sie erhalten werden).
Letzter Punkt: Einige Module / Anwendungen erwarten, dass Apache verwendet wird, und die Dokumentation ist möglicherweise auf die Verwendung von ModRewrite oder die Verwendung von .htaccess-Dateien ausgerichtet. In Nginx wird zwar der ModRewrite-Stil unterstützt, es werden jedoch keine Lösungen im .htaccess-Stil pro Verzeichnis unterstützt.
Persönlich mag ich Nginx, weil es statische Inhalte effizient bereitstellt, es ist sehr einfach, PHP-FPM einzurichten, und ich mag die Konfigurationssyntax. Es ist keine Patentlösung für Leistungsprobleme, aber es ist eine robuste, flexible Option.