Hallo Miteinander
Habe ein Problem mit dem publizieren einer Wordpress Seite. Die WP Seite läuft auf auf einem lighttp Webserver. Die Konfiguration ist so angepasst, das die Site auf Port 8080 läuft. Das funktioniert intern Problemlos. Nun habe ich die Site versucht über nginx auf der opnsense FW zu publizieren über Port 9443.
Wenn ich nun von extern die Seite versuche aufzurufen via https://meinedomain:9443, dann komme ich im ein Timeout und sehe das die URL im Browser auf Port 8080 wechselt, was natürlich nicht geht. Ich habe dann im root directory der WP Site ein einfaches index.html file erstellt. Das kann ich von extern problemos aufrufen, dort passiert der Portwechsel nicht zurück auf 8080 sondern bleibt auf 9443. Es scheint wohl irgendwie WP spezifisch zu sein.
Weiss jemand wie ich verhindern kann das der Port redirect zurück auf 8080 geschieht?
Vielen Dank für eure Hilfe.
Gruss
Ich habe keine Erfahrung mit Wordpress, aber die meisten CMS haben irgendwo eine Konfiguration, die "base URL" oder ähnlich heißt, wo du angibst, unter welcher Adresse du die Website erreichst. Die wird dann immer "hart" in die Links reingerendert, das, was du gerade beobachtest.
Also die Einstellung für Wordpress finden und anpassen ...
Danke für dein Feedback. Leider funktioniert das nicht. Wenn ich in Wordpress die Konfiguration anpasse, also "Worpress Address" und "Site Address" also dort :8080 entferne. Dann kann ich Wordpress nicht mehr erreichen da dann immer auf den Standart Port redirected wird. Wordpress soll weiterhin auf Port 8080 laufen, aber dieser darf nicht in die URL geschrieben werden oder man kann das sonst irgendwie anders handeln... Sonst noch jemand eine Idee? Habe leider auch via google nichts wirklich gefunden. Kann man eventuell auf dem Nginx irgendwas einstellen? er macht ja eigentlich die proxy funktion vom Internet in die DMZ auf den Webserver. Das der diesen "Portsprung" irgendwie handhabt?
ich habe zwar kein wordpress, habe/hatte immer den haprtoxy eingestzet als reverse proxy. keine ahnung ob der das besser hinbekommt als nginx?
Der ngnix muss als Reserve Proxy eingerichtet werden.
Gibt es im Netz etliche Anleitungen zu.
https://bloggerbu.de/reverseproxy/
Das hat mit dem Reverse Proxy nur insoweit zu tun, als der die externe Erreichbarkeit herstellt, er macht kein Rewriting von Inhalten.
Man muss also die site address ändern, aber nicht die wordpress address (https://www.greengeeks.com/blog/wordpress-address-vs-site-address/). Dieser Unterschied ist genau dafür da, den Betrieb und die externe Sicht zu trennen.
Außerdem ist zu beachten, dass die Site dann nicht mehr vernünftig mit der internen URL funktioniert, weil Wordpress immer die site address eingeneriert.
Quote from: meyergru on December 05, 2023, 10:49:48 AM
Das hat mit dem Reverse Proxy nur insoweit zu tun, als der die externe Erreichbarkeit herstellt, er macht kein Rewriting von Inhalten.
Doch genau das macht er wenn ich es richtig einrichte.
Hallo Zusammen
Danke für euer Feedback. Ich habe den nginx auf der opnsense laufen und habe das ganze anhand einer Anleitung eingerichtet. Ich habe auch andere Websiten erfolgreich publizieren können damit. Nur bei wordpress scheine ich es nicht hin zu kriegen.
Habe einen anderen Service den ich intern über http://localwebserver:8096 betreibe und so problemlos via nginx publizieren konnte, ohne dass ich probleme mit dem Port 8096 erhalte.
Ich kann ja bei der website (wordpress) die jetzt probleme macht, im root directory ein index.html erstellen und das kann ich problemlos aufrufen (lighttp ist der webserver der auf port 8080 hört). also scheint es per se kein Problem mit dem webserver selber zu sein. Sonst würde die index.html seite ja auch nicht angezeigt werden können. Erst wenn ich die index.php site öffne, welche zu wordpress gehört, dann kriege ich das Problem dass der Port 8080 redirected wird... Man müsste wohl irgendwie hinkriegen, das nginx das handelt oder das wordpress nicht noch 8080 hinzufügt... aber bisher bin ich da nicht schlau geworden.
EDIT: Ich werde das mit der Site Adress mal testen. Schreibe hier sobald ich das gemacht habe
Quote from: lewald on December 05, 2023, 10:54:33 AM
Quote from: meyergru on December 05, 2023, 10:49:48 AM
Das hat mit dem Reverse Proxy nur insoweit zu tun, als der die externe Erreichbarkeit herstellt, er macht kein Rewriting von Inhalten.
Doch genau das macht er wenn ich es richtig einrichte.
Nein, nicht standardmäßig, z.B. macht man das in Deiner verlinkten Anleitung auch nicht.
"Body/Content-rewriting" geht auch nur sehr bedingt: Nginx kann normal Header, Redirects usw. umschreiben, weil da das Format klar definiert ist. Bei Content ist das ungleich schwieriger. Es gibt ein Modul dafür (ngx_http_sub_module (https://nginx.org/en/docs/http/ngx_http_sub_module.html)), nur stößt das prinzipiell an gewisse Grenzen (beispielsweise, wenn dynamisches Javascript im Spiel ist).
haproxy macht das z.B. standardmäßig auch nicht (https://www.arpalert.org/haproxy-rewrite-body.html).
Es ist also besser, die "externe" URL im HTML-Generator anzupassen, was ja auch geht. @nufan hat aber beide Adressen angepasst, was natürlich nicht funktioniert.
Wie sprichts Du den intern deinen Server an?
Mit http://ipadresse/index.php oder mit einer internen Namen http://tollerwordpress.local/index.php
So, bei mir in Wordpress ist folgendes eingetragen:
Wordpress Address: http://192.168.100.50:8080
Site Address: http://192.168.100.50:8080
So funktioniert es intern. Ich habe nun nur die "Site Address" auf
http://192.168.100.50 geändert.
Der Aufruf der Seite geht intern nun nicht merh, aber auch extern noch nicht... im nginx HTTP Access log sehe ich nur einen Eintragt mit dem
Status: 200
Request Line: GET / HTTP/2.0
Ich habe intern keinen DNS Namen spezifiziert. Ansprechen intern also wie oben genannt.
Bin in sachen Websites nicht so bewandert. Mich wundert es etwas, das man wordpress nicht so konfigurt per default, das die Einstellungen vom Webserver ziehen. So wie es bei anderen Services der Fall ist. Dann würde es vermutlich funktionieren.
Eine einfach index.html seite, also intern
http://192.168.100.50:8080/index.html
kann ich intern aufrufen. Und auch von extern via
https://meinedomain.ch:9443/index.html
funktioniert problemlos.
Du musst bei der Site Address natürlich
https://meinedomain.ch:9443/
eintragen.
Quote from: meyergru on December 05, 2023, 10:49:48 AM
Außerdem ist zu beachten, dass die Site dann nicht mehr vernünftig mit der internen URL funktioniert, weil Wordpress immer die site address eingeneriert.
Ja und nochmal: Du kannst den Kuchen
nicht essen und behalten: Wenn die externe URL funktioniert, liegt das daran, dass Wordpress die richtigen URLs erzeugt. Dann funktioniert natürlich der interne Aufruf nicht mehr (oder nur noch über die externe URL).
Ich habe jezt bei der Site Address die externe URL, also https://meinedomain.ch:9443 eingetragen. Dann erhalte ich folgende Meldung:
"meinedomain hat dich zu oft weitergeleitet"
Im nginx Log erhalte ich dann ganz viele 301 Fehler.... Irgendeine Idee?
Rufts Du die Site URL auch wirklich von extern auf.
ansonsten habe ich das hier zum Therma WordPress und Site URL gefunden.
https://wordpress.stackexchange.com/questions/357172/how-to-use-wordpress-with-any-site-url-the-url-in-settings-for-development
Wenn man das nicht machen möchte und trotzdem eine valide Site URL gesetzt hat die von extern funktioniert dann kann man intern ja einen eignen DNS Eintrag setzen welcher dann auf die interne Ip Adresse zeigt. Split DNs
Poste doch mal Deine ngnix Config
Ja, ich rufe die URL von extern auf.
Weisst du wie ich die Konfiguration von nginx einfach rauskriege? ich habe alles via OpnSense Gui konfiguriert. Sonst müsste ich mich erst mal schlau machen ob ich via ssh auf der opnsense irgendwie an die konfig komme.
Habe mir auch schon mal überlegt ob ich den Raspberry mal platt mache und wordpress mal mit apache installiere, ob das irgendwas ändert.
Hallo Zusammen, ich habe die nginx.config datei von opnsense mal hinzugefügt
es geht um den Port 4443 und den upstream server 192.168.100.50.