loens2
Goto Top

Wordpress Multisite hinter NGINX Proxy Manager

Hallo Zusammen.

Ich betreibe derzeit eine WP Multisite (Subdomain) auf einem LEMP Stack auf einem meiner Server. Da ich derzeit nur eine öffentliche IP Adresse besitze, betreibe ich auf einem anderen Server einen Container mit NGINX Proxy Manager (Nginx als Reverse Proxy mit eingebautem ACME und praktischem Web Interface). Mein Problem liegt nun darin, dass nur die Hauptseite der Multisite Installation erreichbar ist. Alle anderen Seiten werden immer auf die Hauptseite umgeschrieben, obwohl das nirgendwo eingestellt wurde. Ich habe nach etlichen Stunden recherche und ausprobieren das Problem nicht gelöst bekommen. Bitte keine Kommentare wie "Verwende keine Multisite", "Nimm doch Apache" oder "HA Proxy ist viel besser". Ich kann nicht nicht ohne erheblichen Aufwand das bisherige Konzept umstellen.

Hier noch die Reverse Proxy config:

location / {
	proxy_set_header X-Real-IP $remote_addr;
	proxy_set_header Host $host;
        proxy_set_header X-Forwarded-Host $host;
        proxy_set_header X-Forwarded-Server $host;
    	proxy_set_header Upgrade $http_upgrade;
    	proxy_set_header Connection "Upgrade";  
	proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
	proxy_set_header X-Forwarded-Proto $scheme;
        proxy_pass $forward_scheme://$server:$port$request_uri;
	proxy_redirect off;
	proxy_buffering on;
	proxy_request_buffering on;
}

Vielen Dank für die Hilfe.
LG Leo

Content-ID: 7914457802

Url: https://administrator.de/contentid/7914457802

Ausgedruckt am: 19.11.2024 um 01:11 Uhr

Dani
Dani 21.07.2023 um 14:23:22 Uhr
Goto Top
Moin,
Hier noch die Reverse Proxy config:
D.h. diese Konfiguration hast du in dem Proxy Host im NPM als erweitere Konfiguration hinterlegt? Unabhängig davon, aus welchen Grund. Sprich was funktioniert bei dir nicht, wenn du diese Custom Konfiguration weglässt?

Alle anderen Seiten werden immer auf die Hauptseite umgeschrieben
Ändert sich wirklich im Browser die URL oder bleibt dir URL gleich aber du siehst den Inhalt der Hauptwebseite?

Poste doch einmal Screenshots von der Proxy Host Konfiguration im NPM. Das macht es allgemein einfacher für uns aus der Ferne.


Gruß,
Dani
LOENS2
LOENS2 21.07.2023 um 14:47:12 Uhr
Goto Top
@Dani:

D.h. diese Konfiguration hast du in dem Proxy Host im NPM als erweitere Konfiguration hinterlegt? Unabhängig davon, aus welchen Grund. Sprich was funktioniert bei dir nicht, wenn du diese Custom Konfiguration weglässt?

Die Custom Config ist ausschließlich da um Header richtig zu setzten. Wenn ich sie weg lasse ist im Nginx error log alles voll mit Fehlern, das Header falsch oder nicht gesetzt sind. Das Problem ist jedoch das Selbe.


Ändert sich wirklich im Browser die URL oder bleibt dir URL gleich aber du siehst den Inhalt der Hauptwebseite?

Die URL's der Unterseiten zeigen alle die Hauptseite an:
screenshot 2023-07-21 143436
screenshot 2023-07-21 143514

Die Links führen aber alle auf die Domain der Hauptseite.

Hier noch die Screenshots zur Config vom NPM:

screenshot 2023-07-21 144218
screenshot 2023-07-21 144225
screenshot 2023-07-21 144230


Ich bin mir auch nicht sicher, ob das Problem in meiner NGINX Webserver Config liegt und NPM hier gar nicht für das Problem zuständig ist. Ich weiß nur leider nicht, wie ich das testen soll, da wenn ich direkt auf den Wordpress Webserver zugreife kein HTTPS habe und deswegen die Base URL falsch ist.


LG Leo
7907292512
7907292512 21.07.2023 aktualisiert um 15:00:04 Uhr
Goto Top
Moin,
MultiSite ist nach welcher Spielart konfiguriert? Subdomain oder Subdirectory?

.htaccess etc. richtig angepasst und hier alles beachtet?:
https://www.ionos.de/digitalguide/hosting/blogs/wordpress-multisite/

Gruß siddius
LOENS2
LOENS2 21.07.2023 um 15:03:51 Uhr
Goto Top
Zitat von @7907292512:

Moin,
MultiSite ist nach welcher Spielart konfiguriert? Subdomain oder Subdirectory?

.htaccess etc. richtig angepasst und hier alles beachtet?:
https://www.ionos.de/digitalguide/hosting/blogs/wordpress-multisite/

Gruß siddius

Bitte erst lesen!

Das erste steht im ersten Satz meines Ursprungsposts. Subdomain!
Bei NGINX gibt es keine .htaccess so fern ich weiß, deswegen kann ich sie auch nicht konfigurieren.

LG Leo
7907292512
7907292512 21.07.2023 aktualisiert um 15:11:09 Uhr
Goto Top
Zitat von @LOENS2:
Bitte erst lesen!

Das erste steht im ersten Satz meines Ursprungsposts. Subdomain!
Wow ja sorry, ja richtig nett hier ... Du willst ja Hilfe nicht wir.
Wenn Subdomain wurden die dann auch am Nginx beide angelegt?
Bei NGINX gibt es keine .htaccess so fern ich weiß, deswegen kann ich sie auch nicht konfigurieren.
Dafür hat nginx Rewrite-Rules.
https://www.nginx.com/blog/creating-nginx-rewrite-rules/
LOENS2
LOENS2 21.07.2023 um 15:28:41 Uhr
Goto Top
@7907292512:

Wenn Subdomain wurden die dann auch am Nginx beide angelegt?

Ja, beide Subdomains sind in der NGINX bei 'server_name' eingetragen und wurden im DNS angelegt.
Auch eine Wildcard Subdomain bringt hier nichts.

Dafür hat nginx Rewrite-Rules.

Ich weiß nicht inwiefern man hier rewrite Regeln anlegen muss.
Wordpress stellt nur das: https://wordpress.org/documentation/article/nginx/ in den docs zur Verfügung diese Config scheint aber sehr veraltet zu sein und funktioniert außerdem nicht.
Anderswo habe ich auch keine bessere Config gefunden, als die die ich gerade verwende:

server {
    listen 80;
    server_name loens2.com en.loens2.com;
    root /var/www/loens2.com;

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

    index index.php;

    location / {
        #try_files $uri $uri/ =404;
        try_files $uri $uri/ /index.php$args;
    }

    location = /favicon.ico { log_not_found off; access_log off; }
    location = /robots.txt { log_not_found off; access_log off; allow all; }
    location ~* \.(css|gif|ico|jpeg|jpg|js|png)$ {
        expires max;
        log_not_found off;
    }

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

    location ~ /\.ht {
        deny all;
    }

}

LG Leo
Dani
Dani 21.07.2023 um 17:24:30 Uhr
Goto Top
Moin,
Hier noch die Screenshots zur Config vom NPM:
deine Domains unter "Details" und "SSL" stimmen nicht überein. Bei "Details" fehlt eine Subdomain.

Ich weiß nur leider nicht, wie ich das testen soll, da wenn ich direkt auf den Wordpress Webserver zugreife kein HTTPS habe und deswegen die Base URL falsch ist.
ändere temporär die Base URL und teste es anschließend mit HTTP. Das ist doch kein Beinbruch.


Gruß,
Dani
7907292512
7907292512 21.07.2023 aktualisiert um 18:33:15 Uhr
Goto Top
Also ich habe das hier gerade mal mit einem plain nginx als reverse proxy und Wordpress auf einem Apache mit Multisite getestet (clean aufgesetzt). Funktioniert hier so ohne Probleme:

Hier der nginx Server Block (kein Nginx Proxy Manager nur eine plain nginx installation)
server {
	listen 80;
	server_name domain.tld sub1.domain.tld sub2.domain.tld;
	location / {		
		proxy_set_header Host $host;
		proxy_set_header X-Forwarded-Proto $scheme;
		proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
		proxy_set_header X-Real-IP $remote_addr;
		proxy_set_header Upgrade $http_upgrade;
		proxy_set_header Connection "Upgrade";  
		proxy_pass http://192.168.1.20:80;
	}
}

Apache Virtual Host
<VirtualHost *:80>
        ServerName domain.tld
        ServerAlias *.domain.tld
        DocumentRoot /usr/share/wordpress/
        DirectoryIndex index.php index.html
        ErrorLog /var/log/apache2/wp-error.log
        TransferLog /var/log/apache2/wp-access.log

        <Directory /usr/share/wordpress>
            AllowOverride All
            Options FollowSymLinks
            Require all granted
        </Directory>
</VirtualHost>

wp-config.php
// ...
define('WP_ALLOW_MULTISITE',true);  
define('MULTISITE',true);  
define('SUBDOMAIN_INSTALL', true );  
define('DOMAIN_CURRENT_SITE', 'domain.tld' );  
define('PATH_CURRENT_SITE', '/' );  
define('SITE_ID_CURRENT_SITE', 1 );  
define('BLOG_ID_CURRENT_SITE', 1 );  
// ....

.htaccess im Root von Wordpress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
RewriteBase /
RewriteRule ^index\.php$ - [L]

# add a trailing slash to /wp-admin
RewriteRule ^wp-admin$ wp-admin/ [R=301,L]

RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^ - [L]
RewriteRule ^(wp-(content|admin|includes).*) $1 [L]
RewriteRule ^(.*\.php)$ $1 [L]
RewriteRule . index.php [L]

</IfModule>
LOENS2
LOENS2 27.07.2023 um 15:01:11 Uhr
Goto Top
@7907292512 Ich habe mir gerade mal das Setup mit Apache nachgebaut und das funktioniert so weit genau so wie ich es erwarten würde. Allerdings kriege ich es einfach nicht zum laufen, wenn ich nginx als webserver verwende. Ich weiß nicht warum das nicht geht. Ich habe auch keine passenden Rewrite regeln gefunden.
7907292512
7907292512 27.07.2023 aktualisiert um 15:04:29 Uhr
Goto Top
Ich habe auch keine passenden Rewrite regeln gefunden.
Braucht es nicht, s.o. klappt hier im Test out of the box problemlos. Wenn bei dir nicht. Logging einschalten und ins Developer-Tab des Browsers schauen.
LOENS2
LOENS2 27.07.2023 um 15:07:20 Uhr
Goto Top
@Dani

deine Domains unter "Details" und "SSL" stimmen nicht überein. Bei "Details" fehlt eine Subdomain.
Die www Domain ist unwichtig, da sie auf die nicht www domain weiterleitet und nur im SSL Zertifikat mit inbegriffen ist.

ändere temporär die Base URL und teste es anschließend mit HTTP. Das ist doch kein Beinbruch.
Leichter gesagt als getan. Die Felder sind bei mir ausgegraut.

screenshot 2023-07-27 150540
LOENS2
LOENS2 27.07.2023 um 15:29:17 Uhr
Goto Top
Bei mir läuft auf dem Testsystem auch unter Nginx als Webserver alles wie es soll. Komisch. Auf dem Prod System geht das Ganze mit identischer Config nicht... Kann das vllt. mit Themes oder Plugins zusammenhängen, die dieses Verhalten hervorrufen?

LG Leo
7907292512
7907292512 27.07.2023 aktualisiert um 15:43:02 Uhr
Goto Top
Kann das vllt. mit Themes oder Plugins zusammenhängen, die dieses Verhalten hervorrufen?
Glaskugel.. Was du da schon so alles rein gepropft hast weiß doch hier keiner face-confused. Da hilft nur Ausschlussverfahren indem du Dienste und AddOns nacheinander deaktivierst und alle Sites und Anweisungen im Apache und nginx penibelst auf Rewrite prüfst die da nicht hin gehören, genauso wie sämtliche .htaccess Files.
Da musst du selbst durch da kann dir hier verständlicherweise keiner helfen ohne dein System zu kennen.
LOENS2
Lösung LOENS2 27.07.2023 um 20:00:51 Uhr
Goto Top
Ich habe das Problem gefunden! Das Problem lag in der wp-config.php. Dort stand dieser Block:

define('.COOKIE_loens2.', 'loens2.com');  
define('.SITECOOKIEPATH.', '.');  

define( 'WP_HOME', 'https://loens2.com' );  
define( 'WP_SITEURL', 'https://loens2.com' );  
$_SERVER['HTTP_HOST'] = 'loens2.com';  
$_SERVER['REMOTE_ADDR'] = 'https://loens2.com';  
$_SERVER['SERVER_ADDR'] = 'loens2.com';  

Ich weiß nicht mehr, wie dieser da hin gekommen ist, noch was dieser überhaupt macht. Falls es jemand weiß, lasst es mich gerne wissen.
Nachdem ich jetzt diesen Block auskommentiert habe funktioniert alles wie es soll.
Vielen Dank an alle, die soweit geholfen haben.

LG Leo