Wie kann man eine Lokale IP-Adresse mit Port über Adressen erreichen?
Wenn man zum Beispiel einen Home-Server hat und dort verschiedene Dienste drauf laufen, wie kann ich diese dann nicht mit IP und Port, sondern mit einer Adresse erreichen?
Beispiele: Eingabe -> aufgerufenes Ziel
- pihole.local -> 192.168.178.10:80
- webserver.local -> 192.168.178.10:85
- portainer.local -> 192.168.178.10:9000
PS: Bei mir laufen die Dienste im Docker
1 Antwort
Das geht mit einem Reverse Proxy, der anhand des Namens auf einen anderen Namen, eine andere IP-Adresse oder eine andere Kombination von IP-Adresse und Port weiterleitet. Mache ich seit Jahren so, funktioniert.
Zunächst einmal: Um überhaupt mit Namen (*.local) arbeiten zu können, benötigst Du eine Namensauflösung. Du musst also entweder mit globalen Namen arbeiten, die dann auf Deine öffentliche IP-Adresse verweisen, oder aber bei Dir lokal einen DNS -Server einrichten. Alternativ kannst Du auf allen Endgeräten, die mit der *.local-Adresse arbeiten sollen, entsprechende Einträge in der Hosts-Datei einrichten.
Wie man einen Reverse Proxy mit nginx einrichtet, kann ich Dir nicht sagen. Da müsste ich auch durch die Dokumentation wühlen. Für den Apache habe ich das mehrfach gemacht. Dazu braucht es einen vHost:
<IfModule mod_ssl.c>
<VirtualHost *:80>
ServerAdmin webmaster@name.local
ServerName name.local
ProxyRequests Off
ProxyHTMLExtended On
ProxyPass / http://127.0.0.1:3000/
ProxyPassReverse / http://127.0.0.1:3000/
</VirtualHost>
</IfModule>
Wenn jetzt ein Zugriff auf name.local erfolgt, wird auf die 127.0.0.1:3000 weitergereicht.
Für HTTPS braucht es den Port 443 und die entsprechende Konfiguration für TLS.
Wie genau macht man das da? Also dass man dann zum Beispiel .local o.ä. eingeben kann? Ich habe es mit Nginx versucht aber er kann die Seite dann nicht öffnen.