März 19, 2026
5 min read
administratore

Wie man eine WordPress-Site von Apache auf Nginx + PHP-FPM ohne Downtime migriert: Vollständiger technischer Leitfaden

Warum von Apache auf Nginx wechseln

Wenn deine WordPress-Website bei hohem Traffic langsam wird, ist Apache wahrscheinlich die Ursache. Nginx verbraucht 4-mal weniger Speicher und kann 10-mal mehr gleichzeitige Verbindungen verwalten. Das ist keine Magie, sondern Architektur: Apache erstellt einen Prozess oder Thread für jede Verbindung, während Nginx ein ereignisbasiertes Modell verwendet.

Für WordPress ist die Kombination Nginx + PHP-FPM ideal. Nginx verarbeitet statische Dateien und Proxying effizient, während PHP-FPM dir vollständige Kontrolle über die PHP-Prozesse gibt. Du kannst mehrere PHP-Versionen gleichzeitig laufen lassen, Ressourcen projektspezifisch zuweisen und PHP neu starten, ohne den Webserver anzuhalten.

Diese Migration wirkt kompliziert, aber mit der richtigen Methode machst du sie ohne eine Sekunde Ausfall. Schauen wir uns an, wie das geht.

Was du vor dem Start brauchst

Der erste Schritt ist, Nginx neben Apache zu installieren, nicht als Ersatz. Beide können gleichzeitig auf verschiedenen Ports laufen. Apache bleibt auf Port 80 und 443, während Nginx vorübergehend Port 8080 für Tests verwendet.

Installiere Nginx und PHP-FPM:

apt update && apt install nginx php8.2-fpm php8.2-mysql php8.2-curl php8.2-gd php8.2-mbstring php8.2-xml php8.2-zip

Überprüfe, dass PHP-FPM automatisch startet:

systemctl enable php8.2-fpm && systemctl start php8.2-fpm

PHP-FPM kommuniziert über einen UNIX-Socket (schneller als TCP). Der Standard-Socket ist /run/php/php8.2-fpm.sock. Überprüfe, dass er existiert und von www-data gelesen werden kann.

Nginx für WordPress konfigurieren

Erstelle eine Konfigurationsdatei für deine Website in /etc/nginx/sites-available/. Hier ist eine optimale WordPress-Konfiguration:

server {
  listen 8080;
  server_name example.com;
  root /var/www/wordpress;
  index index.php;

  location / {
    try_files $uri $uri/ /index.php?$args;
  }

  location ~ \.php$ {
    include snippets/fastcgi-php.conf;
    fastcgi_pass unix:/run/php/php8.2-fpm.sock;
  }

  location ~ /\.ht {
    deny all;
  }

  location ~* \.(jpg|jpeg|png|gif|ico|css|js|woff|woff2)$ {
    expires 365d;
    add_header Cache-Control "public, immutable";
  }
}

Aktiviere die Konfiguration und teste sie:

ln -s /etc/nginx/sites-available/example.com /etc/nginx/sites-enabled/
nginx -t

Wenn alles in Ordnung ist, starte Nginx:

systemctl start nginx

PHP-FPM für Performance optimieren

Die Standard-PHP-FPM-Konfiguration reicht nicht für eine Website mit anständigem Traffic. Öffne /etc/php/8.2/fpm/pool.d/www.conf und passe die Werte an:

pm = dynamic
pm.max_children = 50
pm.start_servers = 5
pm.min_spare_servers = 5
pm.max_spare_servers = 10
pm.max_requests = 500

Diese Werte funktionieren gut für einen Server mit 4GB RAM. Wenn du mehr hast, kannst du pm.max_children auf 100 erhöhen. Einfache Formel: Verfügbarer RAM für PHP geteilt durch 50MB pro PHP-Prozess (WordPress verbraucht durchschnittlich 30-50MB pro Prozess).

Aktiviere die Status-Seite für Monitoring:

pm.status_path = /fpm-status

Starte PHP-FPM neu:

systemctl restart php8.2-fpm

Konfiguration auf Port 8080 testen

Bevor du den Traffic verlagerst, überprüfe, dass alles auf Port 8080 funktioniert. Füge den Port in deine lokale hosts-Datei hinzu oder teste direkt über IP:

curl -H "Host: example.com" http://SERVER-IP:8080

Teste alle kritischen Funktionen: WordPress-Login, Artikel veröffentlichen, Bild hochladen, wichtige Plugin-Funktionalität. Wenn du Cache verwendest (Redis, Memcached), überprüfe die korrekte Verbindung.

Überprüfe die Antwortzeiten mit curl -w "@curl-format.txt" -o /dev/null -s http://SERVER-IP:8080. Du solltest Antworten unter 200ms für nicht gecachte Seiten sehen.

Die ausfallfreie Migration

Jetzt kommt der wichtige Teil: Wie du den Traffic von Apache zu Nginx verlagerst, ohne einen einzigen Besucher zu verlieren.

Die sicherste Methode ist, Apache vorübergehend als Reverse-Proxy zu verwenden. Ändere die Apache-Konfiguration, um Anfragen an Nginx auf Port 8080 weiterzuleiten:

a2enmod proxy proxy_http
systemctl restart apache2

Dann füge im Apache VirtualHost hinzu:

ProxyPreserveHost On
ProxyPass / http://127.0.0.1:8080/
ProxyPassReverse / http://127.0.0.1:8080/

Jetzt leitet Apache alle Anfragen an Nginx weiter, bleibt aber auf Port 80. Clients sehen exakt dieselbe Website. Überwache die Logs beider Server auf Fehler:

tail -f /var/log/nginx/error.log /var/log/apache2/error.log

Wenn nach einigen Stunden (oder Tagen, wenn du auf Nummer sicher gehen willst) alles perfekt läuft, stoppe Apache und verschiebe Nginx auf Port 80:

systemctl stop apache2
systemctl disable apache2

Ändere in /etc/nginx/sites-available/example.com:

listen 80;
listen [::]:80;

Für HTTPS kopiere die SSL-Zertifikate und füge hinzu:

listen 443 ssl http2;
listen [::]:443 ssl http2;
ssl_certificate /etc/ssl/certs/example.com.crt;
ssl_certificate_key /etc/ssl/private/example.com.key;

Lade Nginx neu:

nginx -s reload

Monitoring und finale Optimierung

Nach der Migration überwache den Ressourcenverbrauch mit htop. Du solltest deutlich weniger Speichernutzung im Vergleich zu Apache sehen. Nginx-Prozesse verbrauchen nur 2-5MB pro Stück, verglichen mit 20-50MB für Apache.

Konfiguriere separate Logs für Fehler und Zugriffe. Aktiviere Log-Rotation, damit die Festplatte nicht vollläuft:

/var/log/nginx/*.log {
  daily
  rotate 14
  compress
  delaycompress
}

Wenn du noch weiter optimieren möchtest, aktiviere FastCGI-Cache in Nginx. Füge im server-Block hinzu:

fastcgi_cache_path /var/cache/nginx levels=1:2 keys_zone=WORDPRESS:100m;
fastcgi_cache_key "$scheme$request_method$host$request_uri";
fastcgi_cache_use_stale error timeout invalid_header http_500;
fastcgi_ignore_headers Cache-Control Expires Set-Cookie;

Im location ~ \.php$-Block:

fastcgi_cache WORDPRESS;
fastcgi_cache_valid 200 60m;

Diese Konfiguration reduziert die Datenbankbelastung dramatisch. Seiten werden aus dem RAM-Cache ausgeliefert, ohne PHP auszuführen.

Fazit

Die Migration von Apache auf Nginx ist kein Sprung ins Ungewisse. Mit der Reverse-Proxy-Methode machst du sie schrittweise und sicher. Das Ergebnis ist ein Server, der weniger Ressourcen verbraucht, schneller antwortet und besser skaliert.

Wenn du deinen Server selbst verwaltest, ist dies eine der besten Optimierungen, die du vornehmen kannst. Der Unterschied zeigt sich sofort in den Antwortzeiten und der Fähigkeit, hohen Traffic zu bewältigen.

Teilen

Lassen Sie uns gemeinsam etwas
Bemerkenswertes schaffen.

Ob Sie eine neue Website, ein komplettes Rebranding oder Unterstützung beim Ausbau Ihrer Online-Präsenz benötigen — wir freuen uns, von Ihrem Projekt zu hören.

Kontakt aufnehmen
+40 770 863 535
office@goldenlobster.ro