WordPress-Seite hinter Nginx ReverseProxy

Eine saubere Infrastruktur und nur zwei offene Ports? Genau das ermöglicht ein Reverse Proxy! Doch nicht alle Webanwendungen spielen direkt mit. Besonders WordPress benötigt eine spezielle Konfiguration, wenn es hinter einem Nginx Reverse Proxy läuft. Hier zeige ich dir Schritt für Schritt, wie du deine WordPress-Installation reibungslos hinter Nginx zum Laufen bekommst!

❓ Warum ein Reverse Proxy?

Ein Reverse Proxy wie Nginx bietet viele Vorteile:
Lastverteilung: Deine Dienste werden effizient auf verschiedene Server verteilt.
Strukturierte Infrastruktur: Klare Trennung zwischen Proxy und Backend-Servern.
Sicherheit: Nur die Ports 80 und 443 müssen nach außen offen sein.

Doch während einfache Weiterleitungen oft problemlos funktionieren, gibt es bei Anwendungen wie WordPress einige Stolpersteine. Lass uns schauen, wie du diese umgehst!

🧱 Meine Ausgangskonfiguration

Ich habe folgende Setup:

🔹 Server1: Debian 12 mit Nginx als Reverse Proxy und einem Let’s Encrypt SSL-Zertifikat.
🔹 Server2: Debian 12 mit Apache2, PHP 8.3 und einer WordPress 6-Installation.

WordPress ist auf Server2 installiert, aber erreichbar soll es über den Reverse Proxy auf Server1 sein.

🛠️ Die Nginx-Konfiguration für WordPress

Auf dem Reverse Proxy (Server1) habe ich die folgende Konfiguration in /etc/nginx/sites-available/default hinterlegt:

server {
    server_name SERVER_NAME;
    listen 80 default_server;

    gzip on;
    gzip_min_length 10240;
    gzip_types text/plain text/css text/xml text/javascript application/x-javascript application/xml;
    gzip_disable "MSIE [1-6]\.";

    add_header Cache-Control public;

    location ^~ / {
        proxy_pass http://192.168.30.202:80;
        proxy_buffering on;
        proxy_buffers 12 12k;
        proxy_redirect off;

        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $remote_addr;
        proxy_set_header Host $host;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }
}

Nachdem die Änderungen gespeichert sind, wird Nginx mit folgendem Befehl neu geladen:

systemctl reload nginx

⚙️ WordPress richtig konfigurieren

WordPress muss nun wissen, dass es sich hinter einem Reverse Proxy befindet. Dazu bearbeiten wir die wp-config.php auf Server2 und fügen vor ABSPATH folgendes hinzu:

/*
Handle SSL reverse proxy
*/
if ($_SERVER['HTTP_X_FORWARDED_PROTO'] == 'https') {
    $_SERVER['HTTPS'] = 'on';
}
if (isset($_SERVER['HTTP_X_FORWARDED_HOST'])) {
    $_SERVER['HTTP_HOST'] = $_SERVER['HTTP_X_FORWARDED_HOST'];
}

Diese Anpassung sorgt dafür, dass WordPress die richtigen Header erkennt und Inhalte korrekt ausliefert.

🎉 Fazit: WordPress läuft hinter dem Proxy!

Nach einem Refresh der Seite läuft alles, wie es soll! 🎉

Falls du also WordPress hinter einem Nginx Reverse Proxy betreiben möchtest, achte darauf, die Header korrekt zu übergeben und WordPress entsprechend zu konfigurieren. Damit bekommst du eine sichere und performante Umgebung ohne Kompromisse.

👥 Techniverse Community

Matrix, Selfhosting, smarte IT-Lösungen und jede Menge Nerd-Talk – das findest du in der Techniverse Community.
Komm vorbei, tausch dich aus und werde ein Teil von uns.
👉 Unsere Gruppe auf Matrix: #community:techniverse.net
Wir freuen uns auf dich!

Vielen Dank fürs Teilen!