Die richtigen nginx Einstellungen für WordPress

Warum sind optimierte NGINX-Einstellungen wichtig?

NGINX ist ein leistungsstarker Webserver, der besonders für hochfrequentierte Webseiten wie WordPress geeignet ist. Durch korrekt konfigurierte Einstellungen kannst du die Ladezeit reduzieren, die Sicherheit erhöhen und die Serverressourcen effizienter nutzen.

1. Basis-NGINX-Konfiguration für WordPress

Hier ist eine grundlegende nginx.conf, die als Ausgangspunkt für eine WordPress-Installation dient:

server {
listen 80;
server_name deine-domain.de www.deine-domain.de;

root /pfad/zu/wordpress;
index index.php index.html index.htm;

# GZIP-Komprimierung aktivieren
gzip on;
gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;

# Standard-Sicherheitsheader
add_header X-Frame-Options "SAMEORIGIN";
add_header X-Content-Type-Options "nosniff";
add_header X-XSS-Protection "1; mode=block";

# WordPress-spezifische Regeln
location / {
try_files $uri $uri/ /index.php?$args;
}

location ~ \.php$ {
include fastcgi_params;
fastcgi_pass 127.0.0.1:9000; # PHP-FPM Server
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}

# Blockiere Zugriff auf sensible Dateien
location ~* /(\.htaccess|\.htpasswd|\.env|\.user.ini|\.git|\.svn|\.ssh|\.DS_Store) {
deny all;
}

# Cache für statische Inhalte
location ~* \.(js|css|png|jpg|jpeg|gif|ico|svg|woff|woff2|ttf|otf|eot|ttf|otf|mp4|webm|ogg|ogv|json)$ {
expires max;
log_not_found off;
}

# Caching von Bildern und statischen Inhalten
location ~* \.(?:manifest|appcache|html?|xml|json)$ {
expires 1h;
}
}

2. Zusätzliche Optimierungen für WordPress

2.1 Permalink-Unterstützung

WordPress nutzt Permalinks, die durch try_files korrekt gehandhabt werden. Die Zeile

try_files $uri $uri/ /index.php?$args;

stellt sicher, dass WordPress URLs wie /blog/titel-des-beitrags korrekt auflöst.

2.2 Unterstützung für WordPress-Cronjobs

Deaktiviere den internen WP-Cronjob (wp-cron.php) in der wp-config.php:

define('DISABLE_WP_CRON', true);

Erstelle einen Cronjob auf dem Server, der den Cron alle 15 Minuten ausführt:

*/15 * * * * curl -s https://deine-domain.de/wp-cron.php > /dev/null

3. Caching und Performance

3.1 FastCGI Cache

FastCGI Cache speichert dynamische Inhalte wie WordPress-Seiten im Speicher:

fastcgi_cache_path /var/cache/nginx/fastcgi_temp levels=1:2 keys_zone=WORDPRESS:100m inactive=60m;
fastcgi_cache_key "$scheme$request_method$host$request_uri";

server {
...
location ~ \.php$ {
fastcgi_cache WORDPRESS;
fastcgi_cache_valid 200 301 302 10m;
fastcgi_cache_min_uses 1;
add_header X-FastCGI-Cache $upstream_cache_status;
include fastcgi_params;
fastcgi_pass 127.0.0.1:9000;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
}

3.2 Objekt-Caching mit Redis

Nutze Redis, um Datenbankabfragen zu beschleunigen:

  • Installiere und aktiviere das Plugin Redis Object Cache.
  • Füge folgende Zeilen zur wp-config.php hinzu:
define('WP_REDIS_HOST', '127.0.0.1');
define('WP_REDIS_PORT', 6379);
  • Stelle sicher, dass Redis läuft und in der nginx.conf keine Konflikte entstehen.

4. Sicherheitsmaßnahmen

4.1 Schutz vor Bruteforce-Attacken

Blockiere zu viele Login-Versuche:

location = /wp-login.php {
limit_req zone=one burst=5 nodelay;
include fastcgi_params;
fastcgi_pass 127.0.0.1:9000;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}

4.2 SSL aktivieren

Aktiviere HTTPS mit einem SSL-Zertifikat (z. B. von Let’s Encrypt):

server {
listen 443 ssl;
server_name deine-domain.de www.deine-domain.de;

ssl_certificate /etc/letsencrypt/live/deine-domain.de/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/deine-domain.de/privkey.pem;

include ssl-params.conf;
...
}

4.3 Zusätzliche Security-Header

add_header Strict-Transport-Security "max-age=31536000; includeSubDomains; preload" always;
add_header Content-Security-Policy "default-src 'self';";

5. Debugging und Überwachung

5.1 Fehlerprotokollierung

Aktiviere detaillierte Logs für Fehleranalyse:

error_log /var/log/nginx/error.log;
access_log /var/log/nginx/access.log;

5.2 Überwachung mit Tools

Nutze Tools wie htop, ngxtop oder New Relic, um die Serverleistung zu überwachen.


6. Beispiel für NGINX mit WordPress auf Plesk

Falls du Plesk verwendest, füge unter Domains > NGINX Einstellungen folgende Direktiven ein:

# Zusätzliche Direktiven
gzip on;
gzip_proxied any;
gzip_types text/css application/javascript;

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

Mit diesen Einstellungen kannst du eine schnelle, sichere und zuverlässige WordPress-Umgebung mit NGINX erstellen.


Zusammenfassung: Worauf sollte man bei NGINX-Einstellungen für WordPress achten?

  1. Grundlegende Funktionalität sicherstellen:
    • Stelle sicher, dass try_files korrekt konfiguriert ist, damit WordPress-Permalinks funktionieren.
    • PHP-Anfragen sollten mit fastcgi_pass an PHP-FPM weitergeleitet werden.
  2. Caching für bessere Performance:
    • Implementiere FastCGI Cache für dynamische Inhalte.
    • Nutze Redis oder ein anderes Objekt-Caching-Tool, um Datenbankabfragen zu beschleunigen.
  3. Sicherheitsmaßnahmen einrichten:
    • Blockiere unautorisierten Zugriff auf sensible Dateien wie .htaccess, .env oder .git.
    • Schütze den Login-Bereich (/wp-login.php) mit Ratelimiting und einer Firewall.
    • Aktiviere HTTPS mit einem SSL-Zertifikat und füge Security-Header hinzu (z. B. HSTS, Content Security Policy).
  4. Optimierung für statische Inhalte:
    • Cache statische Dateien (Bilder, JS, CSS) mit langen expires-Headern.
    • Aktiviere GZIP-Komprimierung, um die Übertragungsgröße zu reduzieren.
  5. Serverüberwachung und Debugging:
    • Aktiviere Error- und Access-Logs, um Probleme zu identifizieren.
    • Überwache die Serverlast und analysiere mögliche Engpässe.
  6. Zusammenarbeit mit WordPress-spezifischen Tools:
    • Deaktiviere den internen WordPress-Cronjob und richte einen serverseitigen Cronjob ein.
    • Verwende optimierte Plugins, die mit deiner NGINX-Konfiguration harmonieren, wie z. B. WP Rocket oder LiteSpeed Cache.

Wichtigste Prioritäten:

  1. Performance: Schnelle Ladezeiten durch Caching und effiziente Weiterleitung von Anfragen.
  2. Sicherheit: Schutz vor Angriffen und Datendiebstahl durch Sicherheitsheader und Ratelimiting.
  3. Stabilität: Eine saubere Konfiguration ohne Konflikte oder Fehler, um Ausfälle zu vermeiden.

Mit diesen Punkten stellst du sicher, dass deine WordPress-Installation unter NGINX schnell, sicher und zuverlässig läuft.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

de_DEDeutsch