Surveillance Station Surveillance Station hinter Apache Reverse Proxy

Wolfpaxx

Benutzer
Mitglied seit
12. Sep 2016
Beiträge
5
Punkte für Reaktionen
1
Punkte
1
Hallo zusammen,

ich habe meine DS/Surveillance Station hinter einem Apache Reverse Proxy. Grundsätzlich funktioniert die Konfiguration, allerdings wohl nur in einer Art Fallback-Modus.
Mein Problem ist, dass von den mobilen Endgeräten (iPad/iPhone) der Verbindungsaufbau zu einem Kamera-Stream ewig dauert.
Versuche ich das Ganze über Browser, kann er gar keine Verbindung aufbauen.
Mache ich eine direkt Portfreigabe auf die DS, dann funktioniert es einwandfrei und blitzschnell, es muss also der Proxy sein.

Meine Vermutung ist aktuell, dass irgendein besonderes Format/Protokoll des Streams nicht durchgereicht wird (RSTP oder ähnliches).
Die Mobilgeräte scheinen dann nach Timeout in irgendeinen anderen Übertragungsmodus zu gehen, die Browser scheinen das nicht zu können.
Die Apache-Logs sind für mich nicht sonderlich aussagekräftig, das einzige, was mir aufgefallen sind, waren einige Error 502:

"GET /ss_message_task/?ClientType=webclient&blWriteBinary=true HTTP/1.1" 502 11939 "-" "Synology-DS_cam_5.7.0_iPad_Pro...
"GET /ss_webstream_task/?method=MixStream&stmSrc=0&blAudio=true&dsId=0&id=4&devType=1&profile=0 HTTP/1.1" 502 11939 "-" "Synology-DS_cam_5.7.0_iPad_Pro...

Könntet ihr bitte mal einen Blick auf meine (etwas grob aus Google-Ergebnissen zusammengeschusterte) Apache-Config werfen und eure Gedanken dazu mit mir teilen?
Vielen Dank im Voraus! :)

##### Synology DS118 Surveillance ##### # https://www.serverlab.ca/tutorials/linux/web-servers-linux/how-to-reverse-proxy-websockets-with-apache-2-4/ [I]<VirtualHost *:80> ServerName xxx.yyy.com ServerAlias www.xxx.yyy.com Proxypass "/" "http://192.168.1.xxx:5000/" RewriteEngine on RewriteCond ${HTTP:Upgrade} websocket [NC] RewriteCond ${HTTP:Connection} upgrade [NC] RewriteRule .* "ws://192.168.1.xxx:5000/$1" [P,L] ProxypassReverse "/" "http://192.168.1.xxx:5000/" </VirtualHost> <VirtualHost *:443> SSLProxyEngine on SSLProxyVerify none SSLProxyCheckPeerCN off SSLProxyCheckPeerName off ServerName xxx.yyy.com ServerAlias www.xxx.yyy.com Proxypass "/" "https://192.168.1.xxx:5001/" RewriteEngine on RewriteCond ${HTTP:Upgrade} websocket [NC] RewriteCond ${HTTP:Connection} upgrade [NC] RewriteRule .* "wss://192.168.1.xxx:5001/$1" [P,L] ProxypassReverse "/" "https://192.168.1.xxx:5001/" SSLEngine On SSLCertificateFile yyy.com-crt.pem SSLCertificateKeyFile yyy.com-key.pem SSLCertificateChainFile yyy.com-chain-only.pem # Header always set Strict-Transport-Security "max-age=63072000; includeSubdomains;" </VirtualHost>[/I]
 

c0smo

Benutzer
Contributor
Sehr erfahren
Maintainer
Mitglied seit
08. Mai 2015
Beiträge
6.689
Punkte für Reaktionen
1.212
Punkte
254
Du musst ein Websocket im Reverse Proxy konfigurieren.
Wie das bei Apache ist bzw. umgesetzt werden muss, weiß ich leider nicht.
Ich denke aber, das Stichwort Websocket bringt dich ans Ziel.

Edit/
Warum nimmst du nicht den RP vom NAS, statt dem
etwas grob aus Google-Ergebnissen zusammengeschusterte
Script? Dort kann der Websocket mit ein paar Klicks konfiguriert werden.
 
Zuletzt bearbeitet:

Wolfpaxx

Benutzer
Mitglied seit
12. Sep 2016
Beiträge
5
Punkte für Reaktionen
1
Punkte
1
@c0smo: Ich dachte eigentlich, ich hätte einen Websocket konfiguriert über die RewriteEngine. Oder es zumindest versucht. Ganz hab ich die Systematik davon leider noch nicht verstanden... :-(

Das mit dem RP vom NAS ist leider keine Option, auf dem Reverse Proxy sind über 30 Hosts definiert, die rund um die Uhr werkeln. Und die Syno soll irgendwann auch mal zwischendrin schlafen gehen... ;-)

Vielleicht findet sich ja noch jemand, der mir mit der Websocket-Config den richtigen Weg weisen kann.
 

c0smo

Benutzer
Contributor
Sehr erfahren
Maintainer
Mitglied seit
08. Mai 2015
Beiträge
6.689
Punkte für Reaktionen
1.212
Punkte
254
Ich bin dann raus. Für absichtlich verkomplizierte Konfigurationen bin ich der Falsche Ansprechpartner. 😉
Verstehe auch nicht warum ein Server schlafen muss, wenn doch Dienste 24/7 benötigt werden.
Ein Server hat nicht zu schlafen 😂
 
  • Like
Reaktionen: Rene1

famjak

Benutzer
Mitglied seit
10. Jan 2009
Beiträge
192
Punkte für Reaktionen
15
Punkte
18
Zumal die DS meines Wissens auch nicht schlafen geht wenn die SS läuft.
 
  • Like
Reaktionen: c0smo

Wolfpaxx

Benutzer
Mitglied seit
12. Sep 2016
Beiträge
5
Punkte für Reaktionen
1
Punkte
1
Eigentlich hatte mich die Hilfsbereitschaft hier schon total motiviert, nichts mehr weiter zu schreiben,
aber nachdem ich es jetzt doch selbst lösen konnte, nochmal für die Nachwelt festgehalten, vielleicht hilft es ja irgendwann einer anderen verlorenen Seele:

Das Tutorial auf https://www.serverlab.ca/tutorials/...-to-reverse-proxy-websockets-with-apache-2-4/ hatte elementare Fehler, von denen ich alle bis auf einen erkannt hatte:
In den RewriteCondition-Teilen ist das Sonderzeichen nicht "$" sondern "%".
Nach der kleinen Änderung an zwei Stellen läuft es wie ein Uhrwerk und der Verbindungsaufbau zu den Kameras geht in unter einer Sekunde.

Nachdem ich noch den für Testzwecke eingebauten unverschlüsselten Teil jetzt entfernt habe, ist das meine funktionierende Config:

##### Synology DS118 Surveillance #####
# https://www.serverlab.ca/tutorials/...-to-reverse-proxy-websockets-with-apache-2-4/
<VirtualHost *:443>
SSLProxyEngine on
SSLProxyVerify none
SSLProxyCheckPeerCN off
SSLProxyCheckPeerName off
ServerName xxx.yyy.com
ServerAlias www.xxx.yyy.com

Proxypass "/" "https://192.168.1.xxx:5001/"
RewriteEngine on
RewriteCond %{HTTP:Upgrade} websocket [NC]
RewriteCond %{HTTP:Connection} upgrade [NC]
RewriteRule .* "wss://192.168.1.xxx:5001/$1" [P,L]
ProxypassReverse "/" "https://192.168.1.xxx:5001/"
SSLEngine On
SSLCertificateFile yyy.com-crt.pem
SSLCertificateKeyFile yyy.com-key.pem
SSLCertificateChainFile yyy.com-chain-only.pem
# Header always set Strict-Transport-Security "max-age=63072000; includeSubdomains;"
</VirtualHost>
 
  • Like
Reaktionen: c0smo


 

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