WordPress-Seite hinter Nginx ReverseProxy

Ich betreibe seit einiger Zeit einen ReverseProxy-Server in meinem Netzwerk. Für mich waren folgende Punkte essenziell:
– die Lasten der einzelnen Dienste werden auf verschiedene Server im Netzwerk verteilt
– eine saubere, aufgeräumte und strukturierte Infrastruktur
– es müssen nur der Port 80/443 freigegeben werden

So ein ReverseProxy bringt allerdings auch einige Hürden mit sich. So gibt es Dienste, die ihre ganz eigene Konfiguration brauchen anstelle einer einfachen Weiterleitung. Das gleiche habe ich auch mit WordPress in Verbindung mit Nginx erlebt.

Meine Ausgangskonfiguration

Server1: Debian 10, Nginx Webserver, ReverseProxy-Funktion, SSL-Zertifikat von Letsencrypt
Server2: Debian 10, Apache2 Webserver mit PHP 7.3, WordPress 5.3.2 Installation

Folgende Konfiguration habe ich auf dem ReverseProxy unter /etc/nginx/sites-available/default getätigt:

				
					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;
}

				
			

Editor geschlossen, systemctl reload nginx ausgeführt und damit ist der Webserver wieder da.

Nun bearbeiten wir die wp-config.php im Root-Verzeichnis der WordPress-Installation auf dem anderen Server

				
					/*
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'];
}
				
			

Diesen Snipped habe ich oberhalb “ABSPATH” eingetragen, die Konfiguration gespeichert und einen Refresh der Seite gemacht.

Voilà. Läuft. 

Danke fürs Teilen!