WordPress nur von außerhalb ODER von intern erreichbar?!

  • Hallo Zusammen!

    Mein Wordpress läuft auf einem Windows Server 2012 mit WAMP. Ich habe WAMP und Wordpress auch schon richtig konfiguriert, die Firewall von Windows angepasst.

    Auf dem Apache Server läuft Wordpress als Virtual Host. Ebenso läuft eine andere statische HTML Webseite als Virtueller Host. Meine Virtual Hosts unterscheiden sich nicht durch den Namen, sondern durch den Port. Somit kann ich mehrere Seiten mit einer IP Adresse (und eben jeweils einem anderen Port) hosten.
    Auf dem Windows Server läuft ein Updater für eine dynamische DNS Adresse (bei noip.com). Dieser ist richtig konfiguriert und funktioniert auch (mein OpenVPN-Dienst hört, außerhalb meines internen Netzwerks, auf diese Adresse).

    Soweit funktioniert auch alles. Ich hab schon einige aufgetretene Probleme aus dem Weg geschafft und die WordPress Seite nach meinen Vorstellungen angepasst.

    ABER:
    Intern in meinem Netzwerk konnte ich vorerst (außer lokal auf dem Server selbst) nicht auf meine WordPress Seite zugreifen. Nach Befragung des allmächtigen Oracels "Google" hab ich dann den Tipp gefunden, dass ich in den Allgemeinen Einstellungen im WordPress Administratorbereich die "Blogadress" von anfangs "http://localhost:83" auf "http://*interne IP Adresse des Server*:83" ändern soll.
    Gesagt, getan und tada, es funktioniert nun sowohl auf dem Server selbst, als auch von jedem anderen Computer im internen Netzwerk.
    Am Server selbst gebe ich im Browser "localhost:83" ein und auf den Computern im internen Netzwerk einfach die "*IP des Servers*:83".

    Jetzt wollte ich die Seite auch von außerhalb erreichbar machen und hab die entsprechenden Ports (wie ich es auch bei OpenVPN getan habe) (sowohl für die statische Webseite, als auch für WordPress) am Router freigegeben und zum Server weitergeleitet.
    Meine statische Webseite ist von außen ohne Probleme durch die Angabe des DynDNS Namens + Port erreichbar. Lädt auch recht flott.

    Meine WordPress Seite jedoch lädt Ewigkeiten und ich bekomme dann eine "Zeitüberschreitung".
    Also hab ich ein wenig rumexperimentiert und bei einem Fehlversuch natürlich jedesmal alle geänderten Einstellungen wieder zurückgesetzt.
    Letztendlich bin ich dann darauf gekommen, dass ich ja mal unter Allgemeine Einstellungen die Blogadresse ändern könnte und zwar auf "*DynDN Adresse*:83". Beim Klick auf "Speichern" hat nun Wordpress Ewigkeiten geladen. Irgendwann habe ich es einfach nochmal von außerhalb meines Netzwerks probiert und tada, jetzt öffnet sich die WordPress Seite über die DynDNS Adresse!
    Problem JETZT ist, dass ich über meine Computer hier im lokalen Netzwerk nicht mehr auf Wordpress zugreifen kann, da ich hier jetzt den gleichen Fehler hatte, wie vorher von außerhalb des Netzwerks.

    Zusammenfassend:
    Trage ich bei Wordpress http://*DynDNS Adresse*:Port ein, kann ich von außerhalb zugreifen, aber von intern nicht.
    Trage ich bei WordPress http://*Interne IP des Server*:Port ein, kann ich von intern zugreifen, aber von außerhalb nicht.

    Wie löse ich diesen Konflikt :?:

    Notfalls wäre zwar noch die Möglichkeit alle Konfigurationen nur noch von Außerhalb vorzunehmen (hab einen Computer außerhalb meines internen Netzwerks, auf den ich über Teamviewer zugreifen kann), aber ich hätte natürlich gerne eine "saubere" Lösung...

    • Anzeige

    Hallo!

    Wenn du gerade an deiner Website arbeitest oder dein aktuelles Hosting überdenkst: Wir betreiben mit NetzLiving eine Hosting-Plattform, die speziell auf Performance, Sicherheit und einfache Verwaltung ausgelegt ist.

    • ✔️ Schnelle Ladezeiten (optimiert für WordPress & Co.)
    • ✔️ Deutsche Server & DSGVO-konform
    • ✔️ Persönlicher Support (kein 0815-Ticket-System)

    Mehr erfahren

  • Lösen kannst Du das nur in dem Du auf localhost stellst und am Router ein NAT durchführst, also keine DMZ mit der dynmaischen IP sondern klassisches NAT (DNAT/SNAT) mit der internen IP.

    WordPress ist "frei" wie in Freiheit es zu nutzen, aber nicht im Sinne von Freibier. Wer also glaubt man bekommt rund um WordPress alles kostenlos, der irrt. Hilfe ist ein Geschenk für das man sich bedankt, dafür gibt es den 'Gefällt mir' Button. Wer das nicht kann und sich selbst nicht zu helfen weiss, muss sich bezahlte Unterstützung suchen.

  • Wie bereits erwähnt, kannst du, wenn du offline arbeiten willst, die "externe" URL auf localhost umleiten.


    Du kannst auch Folgendes probieren:

    In die wp-config.php kommen diese beiden Zeilen (so in etwa)

    PHP
    define('WP_HOME','http://example.com');
    define('WP_SITEURL','http://example.com');


    und dann mußt du dort als URL nur die jeweilige interne oder externe URL angeben ... kannst du z.B. entscheiden über die Infos aus $SERVER (entweder dir URL dort entnehmen oder anhand dieser Infos auswählen was genommen werden muß)

  • Du kannst auch den internen DNS-Server so konfigurieren, daß er die Anfragen auf den DynDNS-Namen im lokalen Netz mit der IP-Adresse des lokalen Servers beantwortet. In der Wordpress-Konfiguration bleibt dann die DynDNS-Adresse stehen.

    Gruß
    Ingo

    Wenn ich helfen konnte, bitte [ Gefällt mir ] klicken. :-)

  • Lösen kannst Du das nur in dem Du auf localhost stellst...

    Das nützt nichts, denn Wordpress versucht dann auch bei Zugriffen von außen auf "localhost" zuzugreifen, was natürlich schief geht.

    Gruß
    Ingo

    Wenn ich helfen konnte, bitte [ Gefällt mir ] klicken. :-)

  • Ok, jetzt bin ich überfordert :-o

    Also vielleicht sollte ich dazusagen, dass ich einen Telekom Speedport W921V Router habe...
    So recht viel mehr als Portforwarding kann man da glaub ich nicht einstellen :?

    Zitat

    Du kannst auch den internen DNS-Server so konfigurieren, daß er die Anfragen auf den DynDNS-Namen im lokalen Netz mit der IP-Adresse des lokalen Servers beantwortet. In der Wordpress-Konfiguration bleibt dann die DynDNS-Adresse stehen.

    Klingt doch schon mal ganz gut...
    Auf dem Windows Server selbst läuft nur der Dateifreigabeserver, Druckserver, WAMP, OpenVPN. Also nen extra DNS Server hab ich nicht eingerichtet.
    Da ich nur einen internen Desktop-PC habe, müsste sich das doch dann über den Eintrag in der Hosts Datei dieses PCs erledigen können, oder?

    Eintrag müsste dann glaub ich folgender sein:
    *DynDNSAdresse*:Port *interne IP Adresse des Servers*

    Richtig so?

    Ich hab zwar noch einen Laptop, der mal intern im Netzwerk ist, mal extern im Uninetzwerk, aber extern kann ich ja vom Laptop aus konfigurieren, ohne weitere Einstellungen und intern bin ich meist sowieso am Desktop-PC, somit müsste das mit dem hosts Datei Eintrag doch ne gute Lösung sein, oder bring ich da jetzt was durcheinander?

  • Das nützt nichts, denn Wordpress versucht dann auch bei Zugriffen von außen auf "localhost" zuzugreifen, was natürlich schief geht.

    Danke für die Korrektur, Ingo. Habe gerade auf einem Kundensystem nachgesehen. Dort hatte ich das gleiche Thema. Gelöst habe ich es mit NAT am Router und $_SERVER['HTTP_HOST']. Sorry für meine Fehlinformation, ist zu lange her.

    WordPress ist "frei" wie in Freiheit es zu nutzen, aber nicht im Sinne von Freibier. Wer also glaubt man bekommt rund um WordPress alles kostenlos, der irrt. Hilfe ist ein Geschenk für das man sich bedankt, dafür gibt es den 'Gefällt mir' Button. Wer das nicht kann und sich selbst nicht zu helfen weiss, muss sich bezahlte Unterstützung suchen.

  • ...
    Da ich nur einen internen Desktop-PC habe, müsste sich das doch dann über den Eintrag in der Hosts Datei dieses PCs erledigen können, oder?

    Eintrag müsste dann glaub ich folgender sein:
    *DynDNSAdresse*:Port *interne IP Adresse des Servers*

    Richtig so?...

    Ja, aber vielleicht geht es auch einfacher mit den passenden defines in der wp-config. Das könnte etwa so aussehen:


    Damit wird immer das in WP konfiguriert, womit der Zugriff erfolgt. Ich habe es nicht getestet, sollte aber funktionieren.

    Gruß
    Ingo

    Wenn ich helfen konnte, bitte [ Gefällt mir ] klicken. :-)

  • Funktioniert der Code so, wie er dasteht, oder muss ich da noch was anpassen?
    Sry, hab noch nicht so viel Erfahrung mit PHP :oops:

    Muss der Code an eine bestimmte Stelle in der wp-config oder egal wohin?

    Was muss ich dann bei "Blogadresse" in den Wordpresseinstellungen reinschreiben? Nichts, oder eine der beiden Adressen?

  • Du ersetzt die beiden Zeilen define('WP_HOME', ....) und define('WP_SITEURL', ...) durch den Code von Putzlowitsch. Der Code sollte laufen.

    WordPress ist "frei" wie in Freiheit es zu nutzen, aber nicht im Sinne von Freibier. Wer also glaubt man bekommt rund um WordPress alles kostenlos, der irrt. Hilfe ist ein Geschenk für das man sich bedankt, dafür gibt es den 'Gefällt mir' Button. Wer das nicht kann und sich selbst nicht zu helfen weiss, muss sich bezahlte Unterstützung suchen.

  • Durch diese beiden Zeilen deaktiviert man die bloginterne Speicherung/Verwaltung dieser Option und definiert statisch.
    In den WordPress-Einstellungen sollten diese Edits nun auch deaktiviert sein.

  • Da ist noch ein Fehler in meinem Code. Der HTTP_HOST enthält ggf. bereits die Portnummer. Die beiden Zeilen, die auf SERVER_PORT Bezug nehmen, müssen gelöscht werden. Mit Erweiterung für HTTPS sieht das nun so aus:

    Ansonsten funktioniert es so wie erwartet, ich habe es gerade mal getestet.

    Ein Problem sind aber in den Artikeln eingefügte Bilder und andere Ressourcen, die sich auf den WP-Installtion beziehen, weil WP die mit den absoluten URLs einfügt. Die muß man alle relativieren, also sie müssen so aussehen '/pathe/name.jpg', und nicht so 'http://example.com/pathe/name.jpg'.

    Gruß
    Ingo

    Wenn ich helfen konnte, bitte [ Gefällt mir ] klicken. :-)

  • Tschuldigung für die späte Antwort, bin einfach nicht dazugekommen...

    Also ich hab den Code von dir (natürlich die neue Version) gerade eben in die wp-config.php eingefügt. Hab dann den Server restartet und probiert. Geht nicht.
    Anscheinend hab ichs falsch eingefügt....

    mensmaximus schrieb ja:

    Zitat

    Du ersetzt die beiden Zeilen define('WP_HOME', ....) und define('WP_SITEURL', ...) durch den Code von Putzlowitsch. Der Code sollte laufen.

    Allerdings finde ich in der wp-config.php keine Zeilen "define('WP_HOME',....) und define('WP_SITEURL', ...)"
    Somit kann ich diese ja auch nicht ersetzten, daraus folgt, ich hab den Code einfach zusätzlich oben eingefügt.

    Soll ich euch mal meine config hier posten? Hilft das?
    Oder muss ich den Code einfach nur wo anders einfügen? :?:

    Und wegen dem Relativieren der Pfade.... wo finde ich denn die Pfade, bzw. muss ich das im Code ändern? Wie oft kommen denn diese Pfade vor?

    Tut mir leid, dass ihr es hier mit so einem Laien wie mir aushalten müsst :-o

  • In der wp-config.php steht eine Zeile wie:

    PHP
    /* That's all, stop editing! Happy blogging. */

    Am besten ist der Code unmittelbar davor aufgehoben.

    Ein Server-Neustart ist eigentlich nicht erforderlich.

    Was genau heißt "Geht nicht"? Passiert gar nichts, kommt eine Fehlermeldung?

    Gruß
    Ingo

    Wenn ich helfen konnte, bitte [ Gefällt mir ] klicken. :-)

  • Ich hab in deinem Code jetzt den Port von 80 auf 83 gelegt, denn darüber ist meine Webseite ereichbar. Hoffe das ist so richtig!

    Da ich grade in er Uni sitze, kann ich es nicht direkt vor Ort testen. Ich bin aber mit OpenVPN mit zuhause verbunden.

    Also von außen geht es ja sowieso.
    Wenn ich in die Adressleiste die OpenVPN-IP meines Servers eingebe (10.8.0.1) und den Port auf den meine Webseite hört (83), dann komme ich drauf.
    Zuhause würde ich halt jetzt einfach statt 10.8.0.1 die interne IP meines Servers eingeben (192.168.2.112) (und den Port dahinter).
    Bei der dyndns Adresse geht es intern nicht. Da wäre aber egal, hauptsache ich kann intern überhaupt zugreifen!

    Wenns übers OpenVPN funktioniert, wirds zuhause ja auch funktionieren, richtig? :-)

  • Ich hab in deinem Code jetzt den Port von 80 auf 83 gelegt, denn darüber ist meine Webseite ereichbar. Hoffe das ist so richtig!
    ...

    Nein, ist es nicht. :-)

    Die 80 bzw. 443 müssen so stehen bleiben. Das sind meine Vergleichswerte um zu überprüft, ob der Zugriff über den Standardport (http:80, https:443) erfolgt. Falls der Port 80 bzw. 443 ist, wird er nicht an die URL anghängt, in allen anderen abweichenden Fällen ja.

    Mit deiner Änderung wird der Port nicht mehr anghängt, weil Du ihn als Standard definiert hast und somit funktionieren dier Zugriffe nicht, weil die von Wordpress rezeugten URLs nicht den Port 83 enthalten.

    Gruß
    Ingo

    Wenn ich helfen konnte, bitte [ Gefällt mir ] klicken. :-)

  • geändert Chefe ;) !
    Danke für die Erklärung! Man ich muss echt mal PHP lernen ^^.

    Also bevor ich hier ewig Spekulationen rumwerfe, ob es bei mir nun geht oder nicht, probier ich das einfach Abends Zuhause aus und teile dir dann das endgültige Ergebnis mit!

  • So, bin jetzt extra heimgefahren, weil mich das jetzt interessiert hat :-D

    Also:

    Zuhause (ohne deinen Code):
    Interne IP Adresse + Port --> Kein Zugriff
    DynDNS Adresse + Port --> Kein Zugriff

    Zuhause (mit deinem Code):
    Interne IP Adresse + Port --> [COLOR=#00ff00]Zugriff erfolgreich[/COLOR]
    DynDNS Adresse + Port --> Kein Zugriff

    Das war so geplant, richtig? :-)
    Falls das so geplant war, sag ich [COLOR=#0000ff]VIELEN LIEBEN DANK!!!!![/COLOR] :lol: Ob ich die DynDNS Adresse oder die Interne IP eingebe ist mir persönlich Schnuppe. Wichtig war mir nur, dass ich von meinem internen Netzwerk irgendwie auf die Wordpress-Seite zugreifen kann.

    Jetzt ist nur noch die frage wegen den relativen Pfaden:

    Zitat

    Ein Problem sind aber in den Artikeln eingefügte Bilder und andere Ressourcen, die sich auf den WP-Installtion beziehen, weil WP die mit den absoluten URLs einfügt. Die muß man alle relativieren, also sie müssen so aussehen '/pathe/name.jpg', und nicht so 'http://example.com/pathe/name.jpg'.

    Wo liegen denn die Codezeilen, die ich ändern muss? Oder muss ich jede Datei in Wordpress bearbeiten?

    Und dann hätte ich noch eine winzige Frage:
    Bei der Installtion von Wordpress wurde ja gefragt, dass wenn man mehrere Wordpress-Seiten betreiben will, dass man in der wp-config.php das Präfix für die Datenbankeinträge ändern soll/muss.
    Jetzt ist die Frage, wenn ich eine zweite WordPress Seite aufmachen will, kann ich diese Option dann nachträglich ändern, oder hätte ich das bei der Installation machen müssen?

    Beziehungsweise, ich kann ja in MySQL einfach ein neues Schema für Wordpress anlegen (also eine neue Datenbank). Dann dürften da doch keine Konflikte auftreten, oder?

  • ...
    Zuhause (mit deinem Code):
    Interne IP Adresse + Port --> [COLOR=#00ff00]Zugriff erfolgreich[/COLOR]
    DynDNS Adresse + Port --> Kein Zugriff
    ...

    Von außen geht es aber über die DynDNS-Adresse?
    Das es von innen nicht geht, hat weniger etwas mit Wordpress zu tun, als vielmehr mit dem Router, der die Zugriffe von innen über die externe Adresse anders behandelt. Das ist bei mir auch so.


    ...Jetzt ist nur noch die frage wegen den relativen Pfaden:

    Wo liegen denn die Codezeilen, die ich ändern muss? Oder muss ich jede Datei in Wordpress bearbeiten?

    Das ist nicht ganz so einfach. Man muß die Änderungen da vornehmen, wo Wordpress URLs im Editor einfügt, also bei Bildern oder bei internen Links. Ich habe da aber ein Plugin in Arbeit, was genau das leisten wird.


    ...
    Und dann hätte ich noch eine winzige Frage:
    ...
    Beziehungsweise, ich kann ja in MySQL einfach ein neues Schema für Wordpress anlegen (also eine neue Datenbank). Dann dürften da doch keine Konflikte auftreten, oder?

    Genau, eine neue Datenank tut es auch und ist zudem übersichtlicher.

    Gruß
    Ingo

    Wenn ich helfen konnte, bitte [ Gefällt mir ] klicken. :-)

  • Ja von außen läufts über die DynDNS Adresse. Wenn ich logisch nachdenke, ist's ja klar, dass das intern nicht gehen kann. :-)

    Also wenn ich ein Bild einfüge, dann geh ich in die "Text"-Ansicht beim Editor und hau bei dem Link das "http://192.168.2.1:83/" weg und lass den Rest "/wp-content/..." stehen? So einfach?

    Zitat

    Das ist nicht ganz so einfach. Man muß die Änderungen da vornehmen, wo Wordpress URLs im Editor einfügt, also bei Bildern oder bei internen Links. Ich habe da aber ein Plugin in Arbeit, was genau das leisten wird.

    Cool! Kann man die Plugin-Entwicklung irgendwie verfolgen, dass ich mir das installieren kann, sobald es verfügbar ist?

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!