Reverse Proxy Portfreigabe
Guten Tag, ich bin Felix und neu hier und habe (natürlich) eine frage zu meinem neu aufgesetzten Reverse Proxy-Server.
Zum Grundsetup:
Ich habe mit Proxmox mehrere Ubuntu-LXCs laufen, unter anderem auch den apache Reverse Proxy und die beiden Webserver, die ich ansteuere.
An meiner Fritz-Box sind die http und https Ports freigegeben. Erriechbar von aussen bin ich über einen DynDNS-Dienst. Hier lief bisher alles gut.
Auf meinem zweiten Webserver läuft nun Grafana welche sich lokal über den default-Port 3000 erreichen lässt und im Virtual Host auf 80 lauscht.
(Domain und IPs wurden zensiert)
Die Seite erreiche ich auch wunderbar von aussen.
Zusätzlich läuft auf dem Server noch InfluxDB welche den default-Port 8086 nutzt. Hier würde ich gerne mit einem Sensor Daten reinschreiben. Benutze ich die interne IP meines Netzwerks, gelingt das auch. Stelle ich ihn nun auf "meinedomain.com" um, bekomme ich ein "refused connection". Der Sensor, bzw. die Sensoren sollen später aber an unterschiedlichen Standorten stehen. Leider habe ich noch keinen Einblick in die LogFiles des Sensors, da ich Einstellungen nur über den bereitgestellten webserver des Sensors vornehmen kann.
Da warte ich noch auf eine Antwort der Veranwortlichen.
Um von außen auf die Datenbank zu kommen habe ich in der gleichen grafana1.conf ist noch ein Absatz für den Port 8086:
Ohne die Logs aus dem Sensor komme ich alleine nicht wirklich weiter. Daher wollte ich fragen ob meine Einträge überhaupt richtig sind, oder ich irgendwas falsch gemacht habe?
TLDR; ich bekomme mit einem Sensor ein "refused connection" für den port 8086.
Dem reverse Proxy Thema habe ich mich letztes Wochenende angenommen und bin daher noch nicht ganz Sattelfest, habt also bitte Rücksicht wenn ich 2x nachfrage.
(Sorry, sollte ich das Falsche Thema gewählt haben)
EDIT:
Domain und IPs wurden zensiert
Zum Grundsetup:
Ich habe mit Proxmox mehrere Ubuntu-LXCs laufen, unter anderem auch den apache Reverse Proxy und die beiden Webserver, die ich ansteuere.
An meiner Fritz-Box sind die http und https Ports freigegeben. Erriechbar von aussen bin ich über einen DynDNS-Dienst. Hier lief bisher alles gut.
Auf meinem zweiten Webserver läuft nun Grafana welche sich lokal über den default-Port 3000 erreichen lässt und im Virtual Host auf 80 lauscht.
/etc/apache2/sites-enabled/grafana1.conf
<VirtualHost *:80>
ServerName meinedomain.com
ProxyPreserveHost On
DocumentRoot /var/www/html
ProxyPass /.well-known !
ProxyPass / http://x.x.x.x:3000/
ProxyPassReverse / http://x.x.x.x:3000/
RewriteEngine on
RewriteCond %{SERVER_NAME} =meindomain.com
RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent]
</VirtualHost>
(Domain und IPs wurden zensiert)
Die Seite erreiche ich auch wunderbar von aussen.
Zusätzlich läuft auf dem Server noch InfluxDB welche den default-Port 8086 nutzt. Hier würde ich gerne mit einem Sensor Daten reinschreiben. Benutze ich die interne IP meines Netzwerks, gelingt das auch. Stelle ich ihn nun auf "meinedomain.com" um, bekomme ich ein "refused connection". Der Sensor, bzw. die Sensoren sollen später aber an unterschiedlichen Standorten stehen. Leider habe ich noch keinen Einblick in die LogFiles des Sensors, da ich Einstellungen nur über den bereitgestellten webserver des Sensors vornehmen kann.
Da warte ich noch auf eine Antwort der Veranwortlichen.
Um von außen auf die Datenbank zu kommen habe ich in der gleichen grafana1.conf ist noch ein Absatz für den Port 8086:
<VirtualHost *:8086>
ServerName meinedomain.com
ProxyPreserveHost On
ProxyPass / http://x.x.x.x:8086
ProxyPassReverse / http://x.x.x.x:8086
</VirtualHost>
Ohne die Logs aus dem Sensor komme ich alleine nicht wirklich weiter. Daher wollte ich fragen ob meine Einträge überhaupt richtig sind, oder ich irgendwas falsch gemacht habe?
TLDR; ich bekomme mit einem Sensor ein "refused connection" für den port 8086.
Dem reverse Proxy Thema habe ich mich letztes Wochenende angenommen und bin daher noch nicht ganz Sattelfest, habt also bitte Rücksicht wenn ich 2x nachfrage.
(Sorry, sollte ich das Falsche Thema gewählt haben)
EDIT:
Domain und IPs wurden zensiert
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 567998
Url: https://administrator.de/forum/reverse-proxy-portfreigabe-567998.html
Ausgedruckt am: 03.04.2025 um 13:04 Uhr
8 Kommentare
Neuester Kommentar
Dem Sensor musst du erstmal gar nichts angeben.
Der hört weiter auf 8086.
Der Proxy kann anhand verschiedener Kriterien entscheiden, wohin er die Anfragen schickt.
Ich empfehle dir die offizielle Doku:
https://httpd.apache.org/docs/2.4/vhosts/examples.html
z.B. anhand dessen was du in deinem entfernten Browser versuchst aufzurufen:
http://grafana.example.com -> Proxy -> 192.168.x.100:3000 (Beispiel)
http://influxdb.example.com -> Proxy -> 192.168.x.101:8086 (Beispiel)
Vereinfacht: Der Host Header sagt dem Proxy, was er eigentlich sucht.
Deswegen ist es wichtig, dass die virtuellen Hosts den richtigen ServerName tragen.
Der hört weiter auf 8086.
Der Proxy kann anhand verschiedener Kriterien entscheiden, wohin er die Anfragen schickt.
Ich empfehle dir die offizielle Doku:
https://httpd.apache.org/docs/2.4/vhosts/examples.html
z.B. anhand dessen was du in deinem entfernten Browser versuchst aufzurufen:
http://grafana.example.com -> Proxy -> 192.168.x.100:3000 (Beispiel)
http://influxdb.example.com -> Proxy -> 192.168.x.101:8086 (Beispiel)
Vereinfacht: Der Host Header sagt dem Proxy, was er eigentlich sucht.
Deswegen ist es wichtig, dass die virtuellen Hosts den richtigen ServerName tragen.
Jetzt regelt die Fritz!Box die "Weiterleitung". Das ist nichts anderes als eine reine Portweiterleitung.
Die Fritz!Box schaut sich den Zielport deiner Anfrage an und anhand der Portweiterleitung, welche du unter "Internet -> Freigaben" festgelegt hast und schickt die Pakete dann stumpf DIREKT an den Webserver weiter.
Das willst du aber anscheinend nicht. Es funktioniert zwar, jedoch ist es immer ratsam, Server hinter einen Proxy zu stellen, gerade wenn Datenbanken mit im Spiel sind.
Ein GANZ EINFACHES SETUP:
Szenario 1
SZENARIO 2:
Du gibst Port 8086 ZUSÄTZLICH zu Port 80 frei - hier aber ebenfalls auf den PROXY und nicht auf den Webserver.
Noch 2 Bemerkungen:
Das ist ein GANZ einfaches Beispiel. Hier findet KEINE Transportverschlüsselung statt. Benutze das auf KEINEN Fall für sensible Daten.
Das alles sind nur Tipps. Die Umsetzung erfolgt durch dich alleine und du bist für die korrekte und sichere Umsetzung verantwortlich.
Vergiss
a2enmod proxy
und
a2enmod proxy_http
systemctl restart apache2
nicht.
Die Fritz!Box schaut sich den Zielport deiner Anfrage an und anhand der Portweiterleitung, welche du unter "Internet -> Freigaben" festgelegt hast und schickt die Pakete dann stumpf DIREKT an den Webserver weiter.
Das willst du aber anscheinend nicht. Es funktioniert zwar, jedoch ist es immer ratsam, Server hinter einen Proxy zu stellen, gerade wenn Datenbanken mit im Spiel sind.
Ein GANZ EINFACHES SETUP:
Szenario 1
<VirtualHost *:80>
ServerName webserver1.example.com
ProxyPreserveHost On
ProxyPass / http://192.168.x.124:8086/
ProxyPassReverse / http://192.168.x.124:8086/
</VirtualHost>
<VirtualHost *:80>
ServerName webserver2.example.com
ProxyPreserveHost On
ProxyPass / http://192.168.x.125:3000/
ProxyPassReverse / http://192.168.x.125:3000/
</VirtualHost>
SZENARIO 2:
Du gibst Port 8086 ZUSÄTZLICH zu Port 80 frei - hier aber ebenfalls auf den PROXY und nicht auf den Webserver.
Listen 8086
<VirtualHost *:8086>
ServerName bla.example.com
ProxyPreserveHost On
ProxyPass / http://192.168.x.124:8086/
ProxyPassReverse / http://192.168.x.124:8086/
</VirtualHost>
<VirtualHost *:80>
ServerName bla.example.com
ProxyPreserveHost On
ProxyPass / http://192.168.x.125:3000/
ProxyPassReverse / http://192.168.x.125:3000/
</VirtualHost>
Noch 2 Bemerkungen:
Das ist ein GANZ einfaches Beispiel. Hier findet KEINE Transportverschlüsselung statt. Benutze das auf KEINEN Fall für sensible Daten.
Das alles sind nur Tipps. Die Umsetzung erfolgt durch dich alleine und du bist für die korrekte und sichere Umsetzung verantwortlich.
Vergiss
a2enmod proxy
und
a2enmod proxy_http
systemctl restart apache2
nicht.
Denk an das -> 'Listen 8086' in der ersten Zeile des VirtualHost in der Proxy-Config.
Listen 8086
<VirtualHost *:8086>
ServerName bla.example.com
ProxyPreserveHost On
ProxyPass / http://192.168.x.124:8086/
ProxyPassReverse / http://192.168.x.124:8086/
</VirtualHost>
<VirtualHost *:80>
ServerName bla.example.com
ProxyPreserveHost On
ProxyPass / http://192.168.x.125:3000/
ProxyPassReverse / http://192.168.x.125:3000/
</VirtualHost>