Lokale Domain/Name für Webserver?
Guten Morgen 🙂
Ich hab im meinem Netzwerk (Zuhause) einen lokalen Webserver laufen.
Geschrieben in nodejs (express) port 1234. Auf einem Raspberry pi4 8GB, mit Ubuntu server (23.04) ohne Desktop. Router ist eine FritzBox.
Diesen (webserver/pi) erreiche ich durch die ip:port kombi oder per hostname:port ohne Probleme.
Nun zu meiner Frage: Wie kann ich wenn mehrere Seiten auf dem Server laufen, diese zB durch "seite1.local" "seite2.local".. usw erreichbar machen ? Es muss nicht auf .local enden, ich hätte diese nur gerne mit einer "domain" angesprochen, um die eingabe der ip's zu vermeiden.
Installiert hab ich nginx und dnsmasq, aber anscheinend bekomme ich das nicht so recht eingerichtet. Laut meiner Recherche sollte ich damit einen reverse proxy ? ..aufsetzen können und per vhosts auf die websites zeigen.
Bitte um eure Hilfe, bin kein Profi und stecke an dem Punkt fest.
Edit
Mit nginx hatte ich einen vhost erstellt der auf port 80 lauscht und auf eine website zeigt. Aber wie verweise ich auf die 2. Seite ?
Problem: der Server lässt sich zwar somit ohne portangabe nur mit seinem hostnamen ansprechen, aber wie komme ich nun zur zweiten Anwendung/Website ?
Problem mit dnsmasq, es startet nichtmal da avahi oder resolved auf 53 lauschen.
GELÖST
..jedenfalls komm ich so zurecht.
Ich habe eine eigene config erstellt für Nginx in sites-available. Darin lauscht ein Server auf port 80, über die locations gebe ich nun einfach eine andere "route" an
Locations /app1 { settings }
Locations /app2 { settings }
Da ich das Backend selbst schreibe kann ich den Pfad in der app festlegen.. ich dummerchen 🙃
und somit jetzt meine Apps Zuhause erreichen. 🙂
1 Antwort
Du könntest tatsächlich mit einer "lokalen" Domaim arbeiten. Dafür müsstest du ganz einfach deinen eigenen DNS-Server anlegen und deinem Client sagen, dass er diesen DNS-Server benutzen soll. Wenn du dann noch den DNS-Cache löscht, dann geukelst du deine Client vor, er würde auf einen richtigen DNS-Server zugreifen und die zur Domain passende IP-Adresse bekommen.
Das tolle an diese Vorgehen ist, dass Domains auf verschiedene Ports aufgelöst werden können. So würde die IP:Port Kombination vom DNS-Server geliefert werden, was in meinen Augen bereits reichen sollte.
Ich kenne mich mit DNS nicht so gut aus und habe noch nie mit dieser Software gearbeitet. Das Protokoll für DNS sollte aber eigentlich relativ einfach sein. Wieso schreibst du dir nicht einfach selbst einen einfachen DNS-Server? Einfache Kommunikation über Sockets würde da schon ausreichen.
..moment, ich denke du traust mir da etwas zu viel zu 🙃
So schnell und einfach ist das gesagt/geschrieben aber für mich im Moment doch etwas zu viel aufwand. Es sollte eine leichtere Lösung geben.
Dachte evtl noch daran einen Hostnamen per Mdns zu vergeben, also in als modul in der server app implementiert.
Funktioniert auf meinen kleinen arduinos oder esp's mit 2 Zeilen Code. Und diese lassen sich pefekt über eine (in der app definierte .local..) domain ansprechen.
Das hab ich so ungefähr mit dnsmasq versucht umzusetzen.
Dnmasq sollte auf dem server als "dns" laufen. Anschließend noch einen fallback eintragen, damit die verbindung zum "internet" bestehen bleibt.
...das war so mein Gedanke. Bekomme ich aber nicht umgesetzt. 😔