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?
- 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.
- Stelle sicher, dass
- Caching für bessere Performance:
- Implementiere FastCGI Cache für dynamische Inhalte.
- Nutze Redis oder ein anderes Objekt-Caching-Tool, um Datenbankabfragen zu beschleunigen.
- 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).
- Blockiere unautorisierten Zugriff auf sensible Dateien wie
- Optimierung für statische Inhalte:
- Cache statische Dateien (Bilder, JS, CSS) mit langen
expires
-Headern. - Aktiviere GZIP-Komprimierung, um die Übertragungsgröße zu reduzieren.
- Cache statische Dateien (Bilder, JS, CSS) mit langen
- Serverüberwachung und Debugging:
- Aktiviere Error- und Access-Logs, um Probleme zu identifizieren.
- Überwache die Serverlast und analysiere mögliche Engpässe.
- 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:
- Performance: Schnelle Ladezeiten durch Caching und effiziente Weiterleitung von Anfragen.
- Sicherheit: Schutz vor Angriffen und Datendiebstahl durch Sicherheitsheader und Ratelimiting.
- 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.