Apache vs. Nginx für PrestaShop: Welcher Webserver bietet bessere Leistung

389 Aufrufe

Warum die Wahl des Webservers für PrestaShop wichtig ist

PrestaShop ist eine PHP-Anwendung, die HTML-Seiten dynamisch generiert, statische Ressourcen wie Bilder, CSS- und JavaScript-Dateien ausliefert und AJAX-Anfragen sowohl vom Front-Office als auch vom Back-Office verarbeitet. Der Webserver steht zwischen Ihren Besuchern und der PHP-Anwendung und bearbeitet jede einzelne HTTP-Anfrage. Seine Architektur wirkt sich direkt darauf aus, wie viele gleichzeitige Besucher Ihr Shop verarbeiten kann, wie schnell Seiten geladen werden und wie viel Serverspeicher jeder Besucher verbraucht.

Apache und Nginx sind die beiden dominierenden Webserver für das Hosting von PrestaShop. Apache ist seit den frühesten Versionen von PrestaShop die Standardwahl, und PrestaShop wird mit .htaccess-Dateien ausgeliefert, die speziell für Apache konzipiert sind. Nginx hat in den letzten zehn Jahren massiv an Verbreitung gewonnen, da es gleichzeitige Verbindungen besser verarbeitet und einen geringeren Speicherbedarf hat. Beide können PrestaShop effektiv betreiben, unterscheiden sich jedoch in Aspekten, die für die Shop-Performance, die Konfigurationskomplexität und den betrieblichen Aufwand von Bedeutung sind.

Architektur: Prozessmodell vs. Event Loop

Der grundlegende Unterschied zwischen Apache und Nginx besteht darin, wie sie eingehende Verbindungen verarbeiten. Dieser architektonische Unterschied bestimmt jeden Leistungsunterschied zwischen den beiden.

Apaches Prozess-/Thread-Modell

Apache verwendet traditionell ein prozessbasiertes Modell über sein Prefork-MPM (Multi-Processing Module). In diesem Modell erzeugt Apache einen Pool von Worker-Prozessen, und jeder Prozess bearbeitet jeweils eine Anfrage. Wenn eine Anfrage eingeht, wird ihr ein Prozess zugewiesen. Dieser Prozess liest die Anfrage, führt den PHP-Code aus (bei Verwendung von mod_php), sendet die Antwort und wird erst dann für die nächste Anfrage verfügbar.

Das Worker-MPM verwendet Threads anstelle separater Prozesse, was mehr gleichzeitige Verbindungen bei geringerem Speicherverbrauch ermöglicht. Das Event-MPM geht noch weiter und verwendet einen ereignisgesteuerten Ansatz für Keepalive-Verbindungen, während für die aktive Anfrageverarbeitung weiterhin Threads verwendet werden. Moderne Apache-Installationen verwenden typischerweise das Event-MPM, aber das grundlegende Modell beinhaltet weiterhin die Zuweisung eines Threads für jede aktive Anfrage.

Die praktische Konsequenz ist, dass die Parallelität von Apache durch die Anzahl der konfigurierten Worker-Threads oder -Prozesse begrenzt ist. Wenn Sie 150 Worker konfigurieren und 151 Anfragen gleichzeitig eintreffen, wartet die letzte Anfrage in einer Warteschlange. Jeder Worker verbraucht Speicher (typischerweise 10–30 MB pro Prozess mit mod_php, weniger mit PHP-FPM), sodass die maximale Anzahl der Worker durch den verfügbaren RAM begrenzt ist.

Nginx' ereignisgesteuertes Modell

Nginx verwendet eine asynchrone, ereignisgesteuerte Architektur. Eine kleine Anzahl von Worker-Prozessen (typischerweise einer pro CPU-Kern) verarbeitet Tausende von Verbindungen gleichzeitig über eine Event Loop. Wenn eine Anfrage eingeht, verarbeitet Nginx sie auf nicht-blockierende Weise. Wenn Nginx auf etwas warten muss (eine Antwort von PHP-FPM, ein Lesen von der Festplatte, eine Antwort von einem Backend-Server), blockiert es den Worker nicht. Stattdessen wechselt es zur Bearbeitung anderer Verbindungen und kehrt zurück, wenn die wartende Operation abgeschlossen ist.

Das bedeutet, dass ein Nginx-Worker-Prozess, der 1.000 gleichzeitige Verbindungen verarbeitet, ungefähr gleich viel Speicher verbraucht wie bei der Verarbeitung von 10 Verbindungen. Der Speicherbedarf wird durch die Anzahl der Worker-Prozesse (eine Handvoll) bestimmt, nicht durch die Anzahl der Verbindungen (potenziell Tausende). Deshalb glänzt Nginx bei hoher Parallelität und ist die bevorzugte Wahl für Websites mit hohem Traffic.

.htaccess vs. Serverkonfiguration

Einer der bedeutendsten praktischen Unterschiede zwischen Apache und Nginx ist die Handhabung von URL-Umschreibung, Zugriffskontrolle und anderen verzeichnisspezifischen Konfigurationen.

Apache und .htaccess

Apache unterstützt .htaccess-Dateien, die verzeichnisspezifische Konfigurationsdateien sind und serverweite Einstellungen überschreiben können. PrestaShop ist stark von .htaccess abhängig für seine benutzerfreundliche URL-Umschreibung, Zugriffskontrolle, Caching-Header und Sicherheitsheader. Wenn Sie benutzerfreundliche URLs in PrestaShop aktivieren, generiert es eine .htaccess-Datei mit mod_rewrite-Regeln, die saubere URLs wie /schuhe/laufschuh in die interne Dispatcher-URL übersetzen.

Der Vorteil von .htaccess ist die Bequemlichkeit. Sie benötigen keinen Root-Zugriff, um das Webserververhalten zu ändern, und Änderungen werden sofort wirksam, ohne den Server neu zu starten. PrestaShop kann seine eigene .htaccess-Datei vom Back-Office aus schreiben, was bedeutet, dass Funktionen wie benutzerfreundliche URLs, Medienserver-Konfiguration und bestimmte Sicherheitseinstellungen sofort funktionieren.

Der Nachteil ist die Leistung. Jede Anfrage veranlasst Apache, .htaccess-Dateien in jedem Verzeichnis vom Dokumentenstamm bis zum Verzeichnis der angeforderten Datei zu suchen und zu parsen. Bei einer typischen PrestaShop-Anfrage könnte Apache nach .htaccess in /, /var, /var/www, /var/www/html und mehr suchen. Dies fügt jeder Anfrage Festplatten-I/O und Verarbeitungszeit hinzu. Für eine Website, die Hunderte von Anfragen pro Sekunde verarbeitet, ist dieser Overhead messbar.

Wenn Sie Root-Zugriff auf die Apache-Konfiguration haben, können Sie alle .htaccess-Direktiven in die VirtualHost-Konfiguration verschieben und die .htaccess-Verarbeitung mit AllowOverride None deaktivieren. Dies eliminiert den Overhead pro Anfrage bei gleichbleibender Funktionalität. Änderungen erfordern dann jedoch einen Apache-Reload.

Nginx-Konfiguration

Nginx unterstützt keine .htaccess-Dateien. Die gesamte Konfiguration befindet sich in den Server-Block-Konfigurationsdateien, typischerweise unter /etc/nginx/sites-available/ oder /etc/nginx/conf.d/. Jede URL-Umschreibungsregel, Zugriffskontrolldirektive und jeder Caching-Header muss in diesen Dateien definiert werden.

Das bedeutet, dass Sie bei der Einrichtung von PrestaShop unter Nginx die .htaccess-Regeln von PrestaShop manuell in die Nginx-Konfigurationssyntax übersetzen müssen. Die Umschreibungsregeln unterscheiden sich grundlegend zwischen den beiden Servern. Apache verwendet RewriteRule mit Regex-Mustern und Flags wie [L,R=301], während Nginx location-Blöcke mit try_files, rewrite und return-Direktiven verwendet.

Der Vorteil der zentralen Konfiguration ist Leistung (kein Dateiscannen pro Anfrage) und Klarheit (alle Regeln an einem Ort). Der Nachteil ist, dass PrestaShop die Nginx-Konfiguration nicht für Sie generieren kann. Sie müssen sie selbst schreiben und pflegen, und jede Änderung erfordert das Ausführen von nginx -t zum Testen der Syntax und systemctl reload nginx zum Anwenden.

PHP-Integration

Beide Webserver müssen PHP-Code ausführen, um PrestaShop-Seiten zu generieren. Die Methode der PHP-Integration beeinflusst Leistung, Stabilität und Ressourcenmanagement.

Apache mit mod_php

Der traditionelle Ansatz ist Apache mit mod_php, wobei PHP als Modul in jedem Apache-Prozess läuft. Dies ist einfach einzurichten und hat keinen Overhead durch Interprozess-Kommunikation, da PHP im selben Prozess ausgeführt wird, der die HTTP-Anfrage verarbeitet. Allerdings trägt jeder Apache-Worker-Prozess die vollständige PHP-Laufzeitumgebung im Speicher, selbst wenn statische Dateien wie Bilder oder CSS ausgeliefert werden. Dies verschwendet Speicher, da die Mehrheit der Anfragen an einen PrestaShop-Shop statische Ressourcen betrifft, nicht PHP-Seiten.

Apache oder Nginx mit PHP-FPM

PHP-FPM (FastCGI Process Manager) führt PHP als separaten Prozesspool aus. Der Webserver kommuniziert mit PHP-FPM über einen Unix-Socket oder eine TCP-Verbindung unter Verwendung des FastCGI-Protokolls. Wenn eine Anfrage eine PHP-Verarbeitung erfordert, leitet der Webserver sie an PHP-FPM weiter. Wenn die PHP-Verarbeitung abgeschlossen ist, sendet PHP-FPM das Ergebnis an den Webserver zurück, der es an den Client sendet.

Mit PHP-FPM tragen die Webserver-Prozesse, die statische Dateien verarbeiten, die PHP-Laufzeitumgebung nicht im Speicher, was erheblichen Speicher spart. PHP-FPM bietet auch eine eigene Prozessverwaltung mit Funktionen wie dynamischer Pool-Größenanpassung, Slow-Log (Protokollierung, wenn eine Anfrage länger als einen Schwellenwert dauert) und der Möglichkeit, mehrere PHP-Versionen gleichzeitig für verschiedene Websites auszuführen.

Nginx verwendet ausschließlich PHP-FPM, da seine ereignisgesteuerte Architektur mit dem Einbetten von PHP nicht kompatibel ist. Apache kann PHP-FPM über mod_proxy_fcgi verwenden. In modernen Bereitstellungen ist PHP-FPM der empfohlene Ansatz für beide Server.

PHP-FPM-Konfiguration für PrestaShop

Unabhängig vom gewählten Webserver beeinflusst die PHP-FPM-Konfiguration die PrestaShop-Leistung erheblich. Wichtige Einstellungen umfassen:

pm = dynamic ist in der Regel der beste Prozessmanager-Modus. Er startet eine Basisanzahl von Workern und erzeugt bei Belastung weitere, bis zu einem konfigurierten Maximum. Dies bietet ein ausgewogenes Verhältnis zwischen Speicherverbrauch und Reaktionsfähigkeit.

pm.max_children bestimmt die maximale Anzahl der PHP-Prozesse. Jede PrestaShop-Anfrage verwendet typischerweise 30–80 MB Speicher. Teilen Sie daher Ihren verfügbaren RAM (abzüglich des Bedarfs für Webserver und Betriebssystem) durch 80, um ein konservatives Maximum zu erhalten. Für einen Server mit 4 GB nutzbarem RAM sind 50 Children ein vernünftiger Ausgangspunkt.

pm.max_requests = 500 recycelt jeden Worker nach 500 Anfragen, wodurch verhindert wird, dass sich Speicherlecks ansammeln. PrestaShop-Module haben gelegentlich kleinere Speicherlecks, und diese Einstellung verhindert, dass sie zum Problem werden.

Auslieferung statischer Dateien

Ein PrestaShop-Shop liefert große Mengen statischer Dateien aus: Produktbilder, CSS-Stylesheets, JavaScript-Dateien, Schriftarten und Medien-Uploads. Die Leistung bei der Auslieferung statischer Dateien wirkt sich direkt auf Seitenladezeiten und die Serverressourcennutzung aus.

Apaches Leistung bei statischen Dateien

Apache liefert statische Dateien über seine Worker-Prozesse aus. Jede Anfrage für eine statische Datei belegt einen Worker für die Dauer der Übertragung. Für kleine Dateien (CSS, JS, kleine Bilder) geht das schnell. Bei großen Dateien oder langsamen Client-Verbindungen ist der Worker länger belegt. Mit geladenem mod_php trägt jeder Worker unnötigen PHP-Speicher-Overhead, selbst bei statischen Anfragen.

Apache unterstützt sendfile, wodurch der Kernel Dateien direkt von der Festplatte zum Netzwerk-Socket übertragen kann, ohne Daten durch den Benutzerraum zu kopieren. Dies ist standardmäßig aktiviert und hilft bei großen Dateiübertragungen. Apache unterstützt außerdem Content-Negotiation, Byte-Ranges und bedingte Anfragen (If-Modified-Since) standardmäßig.

Nginx' Leistung bei statischen Dateien

Nginx glänzt bei der Auslieferung statischer Dateien, da sein ereignisgesteuertes Modell Tausende gleichzeitiger Dateiübertragungen verarbeiten kann, ohne die Ressourcennutzung proportional zu erhöhen. Ein einzelner Nginx-Worker-Prozess kann Hunderte gleichzeitiger Anfragen für statische Dateien bedienen. In Kombination mit Nginx' effizientem Einsatz des sendfile-Systemaufrufs und seiner integrierten Unterstützung für den Open-File-Cache (Zwischenspeicherung von Dateideskriptoren für häufig abgerufene Dateien) ist die Auslieferung statischer Dateien bemerkenswert schnell.

Für PrestaShop-Shops mit vielen Produktbildern (was auf die meisten Shops zutrifft) ist Nginx' Vorteil bei der Auslieferung statischer Dateien erheblich. Produktseiten mit 5–10 Bildern plus CSS-, JavaScript- und Schriftdateien erzeugen 20–30 Anfragen für statische Dateien pro Seitenaufruf. Bei hohem Traffic verarbeitet Nginx diese mit deutlich weniger Ressourcen als Apache.

SSL/TLS-Terminierung

Jeder PrestaShop-Shop sollte über HTTPS laufen, und der Webserver übernimmt die SSL/TLS-Verschlüsselung und -Entschlüsselung (Terminierung). Beide Server unterstützen modernes TLS gut, aber es gibt Unterschiede in Konfiguration und Leistung.

Apache konfiguriert SSL über mod_ssl mit Direktiven wie SSLEngine on, SSLCertificateFile und SSLProtocol im VirtualHost-Block. OCSP-Stapling, Session-Caching und Cipher-Suite-Auswahl sind alle konfigurierbar.

Nginx konfiguriert SSL im Server-Block mit Direktiven wie ssl_certificate, ssl_protocols und ssl_ciphers. Nginx unterstützt ebenfalls OCSP-Stapling und Session-Caching, und seine Konfiguration ist tendenziell kompakter.

Leistungsmäßig ist der TLS-Handshake aufgrund der asymmetrischen Verschlüsselung CPU-intensiv. Nginx' Fähigkeit, viele gleichzeitige Verbindungen mit wenigen Worker-Prozessen zu verarbeiten, bedeutet, dass es mehr TLS-Handshakes pro Sekunde mit weniger Speicher bewältigen kann. Für Shops, die große Besucherspitzen erhalten (z. B. während eines Sales), kann Nginx' TLS-Leistungsvorteil Verbindungswarteschlangen verhindern.

Reverse Proxy und Lastverteilung

Für PrestaShop-Shops mit hohem Traffic trennt eine Reverse-Proxy-Architektur die Verantwortlichkeiten und verbessert die Skalierbarkeit. Das häufigste Setup verwendet Nginx als Reverse Proxy vor entweder Apache oder einer weiteren Nginx-Instanz mit PHP-FPM.

Nginx als Reverse Proxy für Apache

Dieses Hybrid-Setup kombiniert die Stärken beider Server. Nginx steht vorne, verarbeitet alle eingehenden Verbindungen, liefert statische Dateien direkt aus, übernimmt die SSL-Terminierung und leitet nur PHP-Anfragen an Apache weiter. Apache verarbeitet die PHP-Verarbeitung, und da es nur PHP-Anfragen erhält (keine statischen Dateien), benötigt es weit weniger Worker-Prozesse.

Diese Architektur bietet Ihnen Nginx' Effizienz bei der Verbindungsverarbeitung und Leistung bei statischen Dateien, während Apaches .htaccess-Unterstützung für PrestaShops generierte Umschreibungsregeln erhalten bleibt. Es ist ein gängiger Migrationspfad für Shops, die Nginx' Leistung wollen, ohne ihre gesamte Apache-Konfiguration umzuschreiben.

Die Nginx-Proxy-Konfiguration verwendet die proxy_pass-Direktive, um Anfragen an Apache weiterzuleiten, das typischerweise auf einem nicht standardmäßigen Port wie 8080 läuft. Statische Dateien werden direkt von Nginx über einen location-Block ausgeliefert, der Dateierweiterungen wie .jpg, .css, .js und .png abgleicht.

Vollständiges Nginx-Setup

Für maximale Leistung übernimmt Nginx alles: statische Dateien und PHP-Anfragen (über PHP-FPM). Es gibt kein Apache im Stack. Dies eliminiert die Interprozess-Kommunikation zwischen Nginx und Apache und entfernt den Speicher-Overhead des Betriebs zweier Webserver. Es erfordert jedoch das manuelle Erstellen und Pflegen der Nginx-Konfiguration für PrestaShops URL-Umschreibung, was anfänglich mehr Arbeit bedeutet.

Empfohlene Nginx-Konfiguration für PrestaShop

Eine produktionsreife Nginx-Konfiguration für PrestaShop muss benutzerfreundliche URLs, den Zugang zum Admin-Panel, statisches Datei-Caching, PHP-FPM-Kommunikation und Sicherheit abdecken. Die Schlüsselelemente umfassen einen Server-Block, der auf den Ports 80 und 443 lauscht, einen SSL-Konfigurationsblock mit Ihren Zertifikaten, eine Root-Direktive, die auf Ihre PrestaShop-Installation zeigt, und mehrere Location-Blöcke.

Der Haupt-Location-Block verwendet try_files $uri $uri/ /index.php?$args, um PrestaShops benutzerfreundliche URLs zu verarbeiten. Dies versucht zunächst, die Anfrage als statische Datei auszuliefern, dann als Verzeichnis, und leitet sie schließlich über index.php an den PrestaShop-Dispatcher weiter.

Ein Location-Block, der ~ \.php$ abgleicht, leitet PHP-Anfragen über fastcgi_pass an PHP-FPM weiter. Er enthält die Standard-FastCGI-Parameter und setzt den SCRIPT_FILENAME auf den korrekten Pfad.

Ein Location-Block für statische Ressourcen setzt lange Cache-Ablaufzeiten und deaktiviert das Zugriffsprotokoll, um die I/O zu reduzieren. Abgleichmuster wie \.(jpg|jpeg|gif|png|svg|css|js|ico|woff|woff2|ttf|eot)$ erfassen die gängigen statischen Dateitypen.

Sicherheitsbezogene Location-Blöcke verweigern den Zugriff auf sensible Dateien und Verzeichnisse: .htaccess, .git, config/ (außer config/xml/, das PrestaShop benötigt), vendor/, app/config/ und andere Verzeichnisse, die nie über das Web zugänglich sein sollten.

Empfohlene Apache-Konfiguration für PrestaShop

Apache mit dem Event-MPM und PHP-FPM bietet das beste Apache-basierte PrestaShop-Hosting. Die VirtualHost-Konfiguration sollte die Module rewrite, headers, expires, deflate und proxy_fcgi aktivieren.

Das DocumentRoot zeigt auf Ihre PrestaShop-Installation. AllowOverride All aktiviert die .htaccess-Verarbeitung, die benötigt wird, es sei denn, Sie verschieben alle PrestaShop-Umschreibungsregeln in die VirtualHost-Konfiguration.

Die PHP-FPM-Integration verwendet entweder SetHandler oder ProxyPassMatch, um .php-Anfragen an den PHP-FPM-Socket weiterzuleiten. Der SetHandler-Ansatz mit proxy:unix:/run/php/php-fpm.sock|fcgi://localhost ist einfacher und wird für die meisten Setups empfohlen.

Aktivieren Sie die Gzip-Komprimierung mit mod_deflate für textbasierte Inhaltstypen: HTML, CSS, JavaScript, JSON, XML und SVG. Aktivieren Sie Browser-Caching mit mod_expires und setzen Sie lange Ablaufzeiten für statische Ressourcen und kürzere Zeiten für HTML.

Performance-Benchmarks und Praxisunterschiede

Rohe Benchmark-Zahlen variieren enorm je nach Hardware, Konfiguration, PHP-Version und PrestaShop-Version. Anstatt konkrete Zahlen zu präsentieren, die aus dem Kontext gerissen irreführend wären, beschreiben wir die Muster, die in PrestaShop-Hosting-Benchmarks konsistent auftreten.

Bei der Auslieferung statischer Dateien ist Nginx konstant 2–3 Mal schneller als Apache und verwendet deutlich weniger Speicher. Diese Differenz vergrößert sich mit zunehmender Parallelität. Bei 100 gleichzeitigen Verbindungen beträgt der Unterschied möglicherweise 20 %. Bei 1.000 gleichzeitigen Verbindungen verwendet Nginx möglicherweise 10 Mal weniger Speicher.

Bei der PHP-Anfrageverarbeitung ist der Webserver nicht der Engpass. Die PHP-FPM-Verarbeitungszeit dominiert den Anfragelebenszyklus, und beide Webserver fügen vernachlässigbaren Overhead hinzu im Vergleich zur Zeit, die PHP für die Ausführung von PrestaShop-Code, Datenbankabfragen und Template-Rendering benötigt. Der Unterschied bei der PHP-Anfrageverarbeitung zwischen Apache mit PHP-FPM und Nginx mit PHP-FPM liegt typischerweise unter 5 %, was für die meisten Shops innerhalb des Messrauschens liegt.

Bei gemischten Workloads (dem realistischen Szenario) kommt Nginx' Vorteil von seiner effizienten Verarbeitung statischer Dateien neben PHP-Anfragen. Ein Seitenaufruf generiert eine PHP-Anfrage und 20–30 Anfragen für statische Dateien. Nginx verarbeitet die 20–30 statischen Anfragen mit trivialem Ressourcenverbrauch, während Apache jedem einen Worker-Thread zuweist. Bei hohem Traffic bedeutet dieser Unterschied im Ressourcenverbrauch, dass Nginx eine höhere Parallelität aufrechterhalten kann, bevor die Leistung nachlässt.

Die praktische Schlussfolgerung lautet: Für Shops mit weniger als 50 gleichzeitigen Besuchern macht die Wahl des Webservers nahezu keinen spürbaren Unterschied. Für Shops, die sich 100 gleichzeitigen Besuchern nähern oder diese überschreiten, werden Nginx' architektonische Vorteile bedeutsam.

Migrationsleitfaden: Apache zu Nginx

Die Migration eines bestehenden PrestaShop-Shops von Apache zu Nginx umfasst die Übersetzung der Konfiguration, gründliches Testen und die Umstellung.

Schritt 1: Die .htaccess-Regeln übersetzen

Öffnen Sie Ihre PrestaShop .htaccess-Datei und identifizieren Sie alle aktiven Umschreibungsregeln. Der entscheidende Abschnitt ist die benutzerfreundliche URL-Umschreibung, die typischerweise mit RewriteCond %{REQUEST_FILENAME} !-f und RewriteRule .* - [E=REWRITEBASE:/] beginnt. Diese werden in die oben im Konfigurationsabschnitt erwähnte Nginx try_files-Direktive übersetzt.

Medienserver-Umschreibungen, Sprachpräfix-Behandlung und alle benutzerdefinierten Weiterleitungen müssen ebenfalls übersetzt werden. Jedes Apache RewriteRule- und RewriteCond-Paar muss in die entsprechende Nginx location-, rewrite- oder return-Direktive konvertiert werden.

Schritt 2: Nginx neben Apache einrichten

Installieren Sie Nginx und konfigurieren Sie es so, dass es auf einem anderen Port lauscht (z. B. 8080), während Apache weiterhin auf Port 80 läuft. So können Sie die Nginx-Konfiguration testen, ohne die Live-Website zu beeinträchtigen. Richten Sie Nginx auf das gleiche Dokumentenstammverzeichnis wie Apache, damit es dieselben Dateien ausliefert.

Schritt 3: Alles testen

Greifen Sie über Nginx' Port auf die Website zu und testen Sie jeden Aspekt: die Startseite, Kategorieseiten, Produktseiten, den Warenkorb, den Checkout, das Admin-Panel, benutzerfreundliche URLs, das Laden von Bildern und die mehrsprachige URL-Weiterleitung. Achten Sie besonders auf URL-Muster, die Sonderzeichen oder Abfrageparameter enthalten.

Schritt 4: Umstellen

Sobald die Tests abgeschlossen sind, stoppen Sie Apache und konfigurieren Sie Nginx so, dass es auf Port 80 und 443 lauscht. Laden Sie Nginx neu und überprüfen Sie, ob die Live-Website korrekt funktioniert. Bewahren Sie die Apache-Konfiguration einige Tage auf, falls Sie zurückrollen müssen.

Häufige Migrationsprobleme

Das häufigste Problem sind fehlende Umschreibungsregeln für PrestaShops mehrsprachige URL-Weiterleitung. Wenn Ihr Shop mehrere Sprachen mit Sprachcodes in der URL verwendet (wie /en/, /de/, /fr/), stellen Sie sicher, dass die Nginx-Konfiguration diese Präfixe korrekt verarbeitet.

Ein weiteres häufiges Problem sind Dateigrößenlimits bei Uploads. Apache verwendet LimitRequestBody, während Nginx client_max_body_size verwendet. Wenn Sie Produkte mit großen Bildern importieren, setzen Sie client_max_body_size auf mindestens 20M.

Admin-Panel-AJAX-Anfragen, die auf .htaccess-Umschreibung angewiesen sind, können fehlschlagen, wenn die entsprechenden Nginx-Regeln fehlen. Testen Sie das Admin-Panel gründlich, einschließlich Produktbearbeitung, Bestellverwaltung und Modulkonfiguration.

Welchen sollten Sie wählen

Wählen Sie Apache, wenn Sie auf Shared Hosting sind, wo Sie den Webserver nicht kontrollieren, wenn Sie stark von .htaccess für die Konfiguration abhängig sind (modulgenerierten Regeln, Sicherheits-Plugins) oder wenn Sie sich nicht wohl fühlen, Nginx-Konfigurationsdateien zu schreiben und zu pflegen. Apache mit dem Event-MPM und PHP-FPM ist ein solides, gut unterstütztes Setup für PrestaShop-Shops mit moderatem Traffic.

Wählen Sie Nginx, wenn Sie Root-Zugriff auf Ihren Server haben, Ihr Shop erheblichen Traffic verarbeitet (Hunderte oder Tausende gleichzeitiger Besucher), Sie den geringstmöglichen Ressourcenverbrauch für ein gegebenes Traffic-Niveau wünschen oder Sie einen neuen Server einrichten und die langfristigen Vorteile von Nginx' Architektur bevorzugen. Der anfängliche Konfigurationsaufwand ist eine einmalige Investition, die sich in Leistung und Ressourceneffizienz auszahlt.

Wählen Sie den Nginx-Reverse-Proxy-vor-Apache-Ansatz, wenn Sie Nginx' Leistung für statische Dateien und Verbindungsverarbeitung wünschen, aber Apaches .htaccess-Unterstützung für die Kompatibilität mit PrestaShop-Modulen benötigen, die .htaccess-Regeln generieren oder davon abhängig sind.

Für die meisten neuen PrestaShop-Installationen auf einem VPS oder dedizierten Server ist Nginx mit PHP-FPM die empfohlene Wahl. Die Konfiguration ist gut dokumentiert, die Leistungsvorteile sind real, und die betriebliche Einfachheit eines einzelnen Webserver-Stacks reduziert den Wartungsaufwand. Für bestehende Shops auf Apache, die zufriedenstellend funktionieren, ist die Migration zu Nginx eine lohnende Optimierung, aber keine dringende Notwendigkeit, es sei denn, Sie stoßen an Leistungsgrenzen.

War diese Antwort hilfreich?

Haben Sie noch Fragen?

Can't find what you're looking for? Send us your question and we'll get back to you quickly.

Lade ...
Nach oben