Portforwarding auf eigenen Server

Bennyaa

Lieutenant
Registriert
März 2007
Beiträge
828
Hallo, ich habe auf meinem Rechner einen Webserver laufen, auf welchem eine Energiemanagement Software läuft.
Zusätzlich möchte ich diese um gewisse funktionen erweitern, welche ich mit iobroker realisiert habe.
Nun möchte ich die Visualisierung von io Broker in einem iframe in der Energiemangement software darstellen.
Dies funktioniert auch top:
Energiemangementsoftware = Port xy; iobroker = Port ab
ich kann auch getrennt auf beide via portforwarding von extern zugreifen.

Nun zu meinem Problem:
Wenn ich im dem iframe die "localhost:ab" übergebe, dann klappt das nur, wenn ich im internen netz bin.
Also dachte ich ich übergebe ihm die öffentliche Adresse: "https://myAdress:ab"
das funktioniert allerdings nicht.
gebe ich diese im Browser im eigenen Netz ein, funktioniert das auch nicht.
Gibt es hier eine entsprechende lösung, wie ich von intern und extern auf die ports zugreifen kann?
 
Das liegt daran, dass die meisten Modems/Router kein NAT-Hairpinning können.

Sprich: myAdress:ab erreichst du nur, wenn du außerhalb des eigenen Netzes bist.
Intern kann er das nicht finden, weil das die eigene Adresse ist.
NAT Hairpin von "besseren" Routern kann das.

Also:
NAT Hairpin, oder eine Domain, die dir intern myAddress auf 192.168.x.y aulöst, extern aber z.B auf 12.34.w.v
 
ich würde einen webserver wie z.b. nginx einsetzen und das portforwarding für 80/443 auf diesen konfigurieren. zusätzlich im webserver mittels reverse proxy auf die services weiterleiten:

Code:
location /iobroker {
    proxy_pass http://127.0.0.1:1234;
}

location /energiezeugs{
    proxy_pass http://127.0.0.1:5678;
}

dann sind unter port 80/443 unter diesen URLs beide dienste erreichbar, obwohl sie lokal auf ganz anderen ports laufen.

edit: das hätte auch den vorteil, dass beide dienste auch über https erreichbar sind, obwohl die dienste selbst evtl. nur http können.
 
Zuletzt bearbeitet:
  • Gefällt mir
Reaktionen: FeelsGoodManJPG
OK, aber dann habe ich noch eine Frage:
Warum geht es dann auch nicht von extern, wenn ich in den iframe die externe Adresse eintrage?
Weil das dann vom internen webserver verarbeitet wird?
Wenn ja, warum gehts dann nicht im iframe mit der internen adresse?
 
Zeroflow schrieb:
NAT Hairpin von "besseren" Routern kann das.
Dann ist jede FritzBox wohl ein „besserer“ Router. Wenn ich da eine Weiterleitung auf z.B. Port 1234 an ip 192.168.179.50 einrichte komme ich sowohl über die interne IP als auch über die externe IP oder Domains mit A record auf die richtige Stelle, egal ob von intern oder extern.
 
muss ich mir mal alles ansehen, wollte natürlich nicht noch x dienste auf dem Rechner laufen lassen
 
Habe mir jetzt nginx runter geladen, die exe ausgeführt und der läuft auch im taskmanager (2 mal).
Was muss ich nun einstellen?
Bin hier kompletter neuling logischerweise

allerdings sehe ich auch hier mit dem Handy, wenn ich die öffentliche IP eintrage nur das "Welcome to nginx" wenn ich im LTE bin und nicht im internen netzwerk.
Das ist das gleiche Bild, wie bei den anderen webservern
 
Zuletzt bearbeitet:
0x8100 schrieb:
ich würde einen webserver wie z.b. nginx einsetzen und das portforwarding für 80/443 auf diesen konfigurieren. zusätzlich im webserver mittels reverse proxy auf die services weiterleiten:

Code:
location /iobroker {
    proxy_pass http://127.0.0.1:1234;
}

location /energiezeugs{
    proxy_pass http://127.0.0.1:5678;
}

dann sind unter port 80/443 unter diesen URLs beide dienste erreichbar, obwohl sie lokal auf ganz anderen ports laufen.

edit: das hätte auch den vorteil, dass beide dienste auch über https erreichbar sind, obwohl die dienste selbst evtl. nur http können.
Danke für den Hinweis,
ich habe es in die conf datei eingefügt.
Ich gehe jetzt davon aus, dass ich die URL wie folgt aufrufen kl´önnen sollte:
mydynurl.de/location1
oder
mydynurl.de/location2

bei erine location kommt: Not found
und bei der anderen erscheint: cannot get "location2"

wäre ja schon mal schön, wenn man mit /location auf die webserver kommen würde anstatt mit portnummer,
aber wie gesagt, klappt auch hier nur von außen, innerhalb des netzes geht garnichts.
 
Zuletzt bearbeitet:
Ich habe es nun so in die "nginx.conf" eingetragen:

Code:
server {
        listen 80;
        server_name mydyn.com;
        location /xxx {
                proxy_pass      http://127.0.0.1:8080;
                proxy_set_header Host $host;
                proxy_set_header X-Real-IP $remote_addr;
                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                proxy_set_header X-Forwarded-Proto $scheme;
        }
}

wenn ich nun von extern im Browser mydyn.com eintrage komme ich schon mal auf die grundlegende nginx startseite.
Trage ich von extern mydyn.com/xxx ein, passiert leider garnichts.

Zusätzlich geht das mit mydyn.com NUR von extern (Bspw. Handy, was nicht im WLAN ist).

Was mache ich falsch?

---> nginx läuft hier auf Windows, falls das wichtig ist.

Ps. freue mich über jede Hilfe / jeden Tipp.
Bin allerdings erst wieder Sonntag am Rechner.
Danke schon mal für jeden Beitrag.
 
Zuletzt bearbeitet:
also ich habe jetzt in der Grundeinstellung einfach mal anstatt der root den Proxi eingetragen.
So funktioniert es von außen aber auch NUR FÜR EINEN PROXY.
Von innen leider immer noch nicht.

Und leider geht es irgendwie nicht mit der location.

Code:
  server {
        listen       80;
        server_name  localhost;

        #charset koi8-r;

        #access_log  logs/host.access.log  main;

        location / {
proxy_pass   http://127.0.0.1:8080;
           #root   html;
           #index  index.html index.htm;
        }

Ich brauche dringend eure hilfe :-(
 
0x8100 schrieb:
ich würde einen webserver wie z.b. nginx einsetzen und das portforwarding für 80/443 auf diesen konfigurieren. zusätzlich im webserver mittels reverse proxy auf die services weiterleiten:

Code:
location /iobroker {
    proxy_pass http://127.0.0.1:1234;
}

location /energiezeugs{
    proxy_pass http://127.0.0.1:5678;
}

dann sind unter port 80/443 unter diesen URLs beide dienste erreichbar, obwohl sie lokal auf ganz anderen ports laufen.

edit: das hätte auch den vorteil, dass beide dienste auch über https erreichbar sind, obwohl die dienste selbst evtl. nur http können.
leider funktioniert das bei mir so nicht.
Bekomme die Rückmeldung:

cannot get iobroker.
 
Zurück
Oben