Mehrere Diskstations via Reverse Proxy über 1 Subdomain zugänglich machen

Status
Für weitere Antworten geschlossen.

LANtastic

Benutzer
Mitglied seit
07. Jul 2013
Beiträge
7
Punkte für Reaktionen
0
Punkte
0
Eines vorweg: Ich habe Google mittlerweile fast komplett durchgelesen, stehe aber dennoch auf dem Schlauch.

Zur Konfiguration:
Ich habe 2 DS hinter einer Fritzbox im Netzwerk laufen.
Beide mit der letzten Version von DSM5.
Port 80 & 443 sind freigegeben. Der Rest ist zu.
Es sollte auch nicht nötig sein andere Ports zu öffnen, da ja reverse proxy genau das umgehen kann (und in diesem Fall soll).

Für die Domäne: subdomain.domain.de habe ich ein SSL Zertifikat
Via DDNS wird beim Aufruf von https://subdomain.domain.de meine "HauptDS" aufgerufen.

Mein Ziel:
subdomain.domain.de/ -> Zugriff auf Webseiten, die auf NAS1 liegen (Blog, etc)
subdomain.domain.de/nas1/file -> Zugriff auf Filestation auf NAS1
subdomain.domain.de/nas1/cfg -> Zugriff auf Diskstation Manager auf NAS1

subdomain.domain.de/nas2/file -> Zugriff auf Filestation auf NAS2
subdomain.domain.de/nas2/cfg -> Zugriff auf Diskstation Manager auf NAS2

Auf NAS1 ist ein virtueller Host eingerichtet, hier die conf Datei:

Rich (BBCode):
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_http_module modules/mod_proxy_http.so
LoadModule proxy_connect_module modules/mod_proxy_connect.so

ProxyRequests Off
ProxyVia Off
ProxyPreserveHost On

<Proxy *> 
	Order deny,allow 
	Allow from all 
</Proxy> 

NameVirtualHost *:443

<VirtualHost *:443>
	ServerName subdomain.domain.de

	[...] Block mit SSL Anweisungen [...]

	DocumentRoot /Volume1/web

	RewriteEngine On 
	RewriteCond %{REQUEST_URI} ^/[a-z]+$ 
	RewriteRule ^(.*)$ $1/ [R=301,L] 


	<Location /nas1/cfg/>
		ProxyPass https://<ip-nas1>:5001/ 
		ProxyPassReverse https://<ip-nas1>:5001/
	</Location>

	<Location /nas1/file/>
		ProxyPass https://<ip-nas1>:7001/ 
		ProxyPassReverse https://<ip-nas1>:7001/
	</Location>

	<Location /nas2/cfg/>
		ProxyPass https://<ip-nas2>:5001/ 
		ProxyPassReverse https://<ip-nas2>:5001/
	</Location>

	<Location /nas2/file/>
		ProxyPass https://<ip-nas2>:7001/ 
		ProxyPassReverse https://<ip-nas2>:7001/
	</Location>
</VirtualHost>
Der Zugriff auf "https://subdomain.domain.de" funktioniert 1a, denn ich sehe die Webseite.
Auch Zugriffe auf andere Webseiten innerhalb des Webverzeichnisses kann ich sehen.
Kein Wunder, denn DocumentRoot verweist darauf.

Aber sobald ich eine der anderen URLs aufrufe, wird "kurz" etwas geladen, dann sehe ich jedoch eine leere Seite.
Im Quellcode dieser leeren Seite kann man Quellcode sehen, aber offenbar stimmen die Pfade darin nicht, denn die Elemente werden teils nicht gefunden.
Das DSM Favicon wird zwar angezeigt, aber das wars.
Die Seite ist völlig blank.

Ich habe mein Glück bereits mit mod-rewrite und dem P Flag versucht, komme aber zum selben Ergebnis.

Wo ist mein Denkfehler?
Wieso bekomme ich blanke Seiten angezeigt?

Aber da ich nur 1 SSL Zertifikat habe und dieses auch nutzen will, kann ich nicht für jeden einzelnen Service eine eigene Subdomain anlegen.
Ich habe dutzende Anleitungen gesehen, bei denen die Leute reverse proxy Anweisungen auf den Root ausführen.
Sprich:
Rich (BBCode):
<VirtualHost *:443>
	ServerName subdomain.domain.de

	[.....]

	ProxyPass / https://<ip-nas2>:7001/ 
	ProxyPassReverse / https://<ip-nas2>:7001/
</VirtualHost>
Das klappt auch bei mir.
Sobald ich jedoch alles in Unterverzeichnisse lege geht es nicht mehr.

Wie gesagt: Ports 80 & 443 sind offen. 500x, 700x & co sollen nicht freigegeben werden. 2 offene Ports reichen :)

Für Tipps wäre ich euch seeeeeeeeehr dankbar!
 

LANtastic

Benutzer
Mitglied seit
07. Jul 2013
Beiträge
7
Punkte für Reaktionen
0
Punkte
0
Als kleine Ergänzung zu meinem Problem:

Es ist, wie es ist, die Seiten wollen sich nicht vollständig laden lassen.
Idee 1:
Eigentlich sollte man die Probleme falscher Pfade mit dem mod-proxy-html Modul des Apache lösen können.
Schlecht jedoch, denn dieses Modul ist nicht teil des Apache unter DSM 5 (auch nicht DSM 4).
Leider lässt sich der Apache nicht neu kompilieren, so dass diese Lösung eine klassische Sackgasse ist.

Idee 2:
Hingegen kann der Zugriff auf den Disk Station Manager und die File Station offenbar auf Root Ebene erreicht werden.
D.h. https://subdomain.domain.de/nas1/cfg oder https://subdomain.domain.de/nas1/file geht nicht, über https://subdomain.domain.de/ allerdings schon.
Problem ist dann, dass ich eine "entweder-oder" Lösung habe. Auch blöd.

Idee 3:
Nächster Versuch:
HAProxy als SynoCommunity Packet installiert.
Testweise ohne https.
Fritzbox Portweiterleitung von Port 80 auf Port 5080, da HAProxy auf dem Port lauscht.
Einbindung des Backends via acl Filter
Rich (BBCode):
    acl nas1 url_dir - i /nas1
    acl nas2 url_dir - i /nas2
    acl is_cfg url_dir - i /cfg
    acl is_file url_dir - i /file
Auf Regexp habe ich bewusst verzichtet um es verständlicher zu machen und keine Fehler zu übersehen.
Als Default_backend ist der Webserver eingerichtet.
Das entsprechend Backend wird aufgerufen über
Rich (BBCode):
    use_backend nas1_cfg if nas1 is_cfg
    use_backend nas1_file if nas1 is_file
    use_backend nas2_cfg if nas2 is_cfg
    use_backend nas2_file if nas2 is_file
Ergebnis: Sackgasse auch hier.
Die Seiten werden kurzerhand nicht geladen.
Es erscheint erst ein Fehler 404, dann nachdem der Timeout greift folgt ein Fehler 400.
Rich (BBCode):
#Beispiel einer Fehlermeldung zumindest das Schema ...
#zuerst kommt:
NAME/<NOSRV> -1/-1/-1/-1/5650 400 187 - - CR-- 29/29/3/0/0 0/0 "<BADREQ>"
CR-- bedeutet :
Der Client hat die Verbindung unterbrochen bevor ein vollständiger HTTP request gesendet wurde.

Dabei ist es egal, ob ich die Zeit bis zum Timeout von 5s (Standard) auf 90s hochsetze.
Es dauert dann nur länger bis die entsprechende Fehlermeldung erscheint ...

Verwende ich DSM oder Filestation als default_backend, klappt es wieder!
Hat wohl doch nix mit fehlerhaften, bzw. unvollständigen HTTP Requests zu tun ....


Unabhängig davon funktioniert HAProxy aber super gut (!!!!) wenn man anstelle von Pfaden mit Subdomains arbeitet!
Also:
cfg.nas1.subdomain.domain.de = DSM für Nas 1
file.nas1.subdomain.domain.de = Filestation für Nas 1
cfg.nas2.subdomain.domain.de = DSM für Nas 2
file.nas2.subdomain.domain.de = Filestation für Nas 2

Mein Zertifikat ist jedoch nicht für Subdomain Wildcards (*.domain.de) zulässig, sondern für exakt eine Subdomain.


Fazit:
Ich stehe mit meinem Anfängerwissen am Ende meines Lateins.

Vermutlich werde ich nun aufgrund der Beschreibungen meiner weiteren Erfahrungen und Problem gar keine Antwort mehr erhalten.
Sollte aber jemand den Fehler kennen/finden und das Problem lösen, bzw. umgehen können wäre ich echt dankbar !!!
 

Funker

Benutzer
Mitglied seit
23. Mrz 2015
Beiträge
1
Punkte für Reaktionen
0
Punkte
0
Hi,

bei der selben Sache, wie oben beschrieben, komme ich momentan auch nicht weiter!
Es treten genau die Selben Fehler auf.

Als Reverse-Proxy benutze ich Apache2.
Eine einzlene Diskstation ist ohne Probleme zu erreichen, jedoch die zweite nicht.

Hier meine Apache-Config:

Rich (BBCode):
<VirtualHost *:80>

         ServerName 192.168.178.58
 
 
         ServerAdmin webmaster@localhost
         #DocumentRoot /var/www/html
     
         ProxyPass / http://192.168.178.98:5000/
         ProxyPassReverse / http://192.168.178.98:5000/
 
 
         ProxyPass /nas2/ http://192.168.178.99:5000/
         ProxyPassReverse /nas2/ http://192.168.178.99:5000
 </VirtualHost>


Ich hoffe es gibt inzwischen einen Lösungsansatz!


Grüße
Simon
 
Status
Für weitere Antworten geschlossen.
 

Kaffeautomat

Wenn du das Forum hilfreich findest oder uns unterstützen möchtest, dann gib uns doch einfach einen Kaffee aus.

Als Dankeschön schalten wir deinen Account werbefrei.

:coffee:

Hier gehts zum Kaffeeautomat