Proxy Probleme via apache2 (WebSocket?)

Guten Morgen,

ich habe den ALARMiator auf einer vm aufgesetzt,
(nativ, Debian 11.6 mit Lan Anbindung) die in einem DMZ liegt.
Vom Host/Extern aus, ist der ALARMiator Server über einen Web/Proxy Server aus erreichbar.
Es funktioniert mittlerweile soweit alles,
nur das Wallboard will noch nicht (Dauerspinner)
Wenn ich das Wallboard innerhalb des DMZ aufrufe ist es erreichbar.
Es liegt also am Proxy.
Als Proxy ist ein apache2 im Einsatz, was ich auch nicht ändern kann.

SSL wird ebenfalls vom apache host aus umgesetzt.
Innerhalb des DMZ ist die Verbindung dann http.
DMZ ist nur ein privates Subnetz innerhalb des VM Servers/Hosts.

Ist von euch jemand bei apache2 so Fit mir einen Tip zu geben,
was an den Proxy Settings vom apache2 noch nicht passt ?
In der Doku gibt es leider nur Info’s zu nginx

Ich habe mich im Forum auch schon umgesehen, und es liegt wohl
an der WebSocket Verbindung. Da bin ich unsicher, wie ich das
in der apache2 config umsetzen muss.
Ich hab versucht dies nginx settings zu apache2 settings zu übertragen,
aber bei der WebSocket config hängt es noch.

Folgende Proxy settings habe ich derzeit:

ProxyPass /.well-known/ !

ProxyPass /api/ http://192.168.200.107:5010/
ProxyPassMatch ^/api/(.*) http://192.168.200.107:5010/$1

ProxyPass /spaceport/socket.io/ http://192.168.200.107:5555/
ProxyPassMatch ^/spaceport/socket.io/(.*) http://192.168.200.107:5555/$1

ProxyPass /socket.io/ http://192.168.200.107:5020/
ProxyPassMatch ^/socket.io/(.*) http://192.168.200.107:5020/$1

ProxyPass /ws2/ ws://192.168.200.107:5000/
ProxyPass /wss2/ wss://192.168.200.107:5000/

ProxyPass / http://192.168.200.107:5000/

Das well-known ist nur für die Letsencrypt Zertifikate, da diese
über den apache2 bzw. dessen host gemanaged werden.

spaceport habe ich bisher noch nicht umgesetzt/getestet
Von extern ist die Weboberfläche normal erreichbar, die Mobile App
funktioniert inkl. Alarmierungen.
Nur das wallboard halt noch nicht von extern.

(Die /ws2/ und /wss2/ hab ich aus dem Netz zu Websocket gefunden,
aber das scheint so nicht zu passen)

Ich wäre euch für einen Tipp dankbar.

Grüße,
LinuTuris

Ich kenne mich mit Apache nicht aus, aber da es um SocketIO und Apache geht, hat mich eine kurze Google Suche auf diesen Beitrag verwiesen:

Würde mich an deiner Stelle mal versuchen daran zu orientieren. Denke es fehlt der HTTP zu Websocket Upgrade

Schöne Grüße

Danke für die Info.
Ich habe jetzt schon x verschieden Varianten ausprobiert,
aber das Wallboard will nicht laufen…

Hat denn keiner eine funktionierende Proxy Konfiguration
für ALARMiator für einen apache2 proxy ?

Ich bin für jeden Tipp dankbar.

Aktuell habe ich diese pproxy Einstellungen
(wild getestet, einiges wird überflüssig sein…
derzeit versuche ich halt try and error… :frowning: )

ProxyRequests Off
ProxyPreserveHost On

RewriteEngine on
RewriteCond %{HTTP:Connection} Upgrade [NC]
RewriteCond %{HTTP:Upgrade} websocket [NC]
RewriteRule ^/?(.*) "ws://192.168.100.107:5000/$1" [P,L]

ProxyPass /.well-known/ !

ProxyPass /api/ http://192.168.100.107:5010/
ProxyPassMatch ^/api/(.*) http://192.168.100.107:5010/$1

ProxyPass /spaceport/socket.io/ http://192.168.100.107:5555/
ProxyPassMatch ^/spaceport/socket.io/(.*) http://192.168.100.107:5555/$1

ProxyPass /socket.io/ http://192.168.100.107:5020/
ProxyPassMatch ^/socket.io/(.*) http://192.168.100.107:5020/$1

ProxyPass /ws ws://192.168.100.107:5000/
ProxyPassReverse /ws ws://192.168.100.107:5000/

ProxyPass /wss ws://192.168.100.107:5000/
ProxyPassReverse /wss ws://192.168.100.107:5000/

ProxyPass / http://192.168.100.107:5000/
ProxyPassReverse / http://192.168.100.107:5000/

Grüße,
LinuTuris

Du musst die Rewrite Rule nicht für 5000 machen sondern für die Websocket Ports (5020 / 5555).

Versuch das mal noch. Ausserdem fehlt das Proxy Pass davor für die HTTP Route.

Danke für die Tip’s

Hab ich versucht, gleiches Ergebnis :frowning:
Das ProxyPass / für die Hauptroute ist unten doch dabei
Wenn ich das weiter hoch setze, dann greift das ja auch für die Unterverzeichnisse
wie z.B. /api/ deshalb steht das unten.

ProxyRequests Off
ProxyPreserveHost On

RewriteEngine on
RewriteCond %{HTTP:Connection} Upgrade [NC]
RewriteCond %{HTTP:Upgrade} websocket [NC]
#RewriteRule /(.*) ws://192.168.100.107:5000/$1 [P,L]
RewriteRule /socket.io/(.*) ws://192.168.100.107:5020/$1 [P,L]
RewriteRule ^/spaceport/socket.io/(.*) "ws://192.168.100.107:5555/$1" [P,L]

ProxyPass /.well-known/ !

ProxyPass /api/ http://192.168.100.107:5010/
ProxyPassMatch ^/api/(.*) http://192.168.100.107:5010/$1

ProxyPass /spaceport/socket.io/ http://192.168.100.107:5555/
ProxyPassMatch ^/spaceport/socket.io/(.*) http://192.168.100.107:5555/$1

ProxyPass /socket.io/ http://192.168.100.107:5020/
ProxyPassMatch ^/socket.io/(.*) http://192.168.100.107:5020/$1

ProxyPass / http://192.168.100.107:5000/
ProxyPassReverse / http://192.168.100.107:5000/

Ich hab mir jetzt mal die nginx proxy config von einem docker angeschaut
und versucht das so in apache2 zu übertragen,

Ich denke so müsste das eigentlich passen, aber da es nicht funktioniert
scheint irgendwo noch ein Fehler drin zu sein, oder was zu fehlen.

Das ist meine aktuele prox config:

ProxyRequests Off
ProxyPreserveHost On

RewriteEngine on
RewriteCond %{HTTP:Connection} Upgrade [NC]
RewriteCond %{HTTP:Upgrade} websocket [NC]
RewriteRule ^/socket.io/(.*) ws://192.168.100.107:5020 [P,L]
RewriteRule ^/spaceport/socket.io/(.*) ws://192.168.100.107:5555 [P,L]

ProxyPass /.well-known/ !

ProxyPass /api/ http://192.168.100.107:5010/
ProxyPassReverse /api/ http://192.168.100.107:5010/
ProxyPassMatch ^/api/(.*) http://192.168.100.107:5010/$1

ProxyPass /socket.io/ http://192.168.100.107:5020
ProxyPass /spaceport/socket.io/ http://192.168.100.107:5555

ProxyPass / http://192.168.100.107:5000/
ProxyPassReverse / http://192.168.100.107:5000/
ProxyPassMatch ^/(.*) http://192.168.100.107:5000/$1

Hat denn keiner von euch den ALARMiator hinter einem apache2 Proxy am laufen ?

Grüße

Hi @ all

Ich hätte jetzt mal allgemeinere Fragen, vielleicht kann mir die jemand beantworten.

Laufen auf den Ports 5020 und 5555 ausschließlich WebSocket Verbindungen, oder auch http Anfragen ?

Wie wird auf den Ports gelauscht ?
Wird der URI Pfad ausgewertet ?
Also eine Webseranfrage auf https://host.de/socket.io/abc geht an http://localeiporhost:5020/socket.io/abc ?
Wenn ich das nginx config richtig deute, was ich mir aus einem docker geholt habe,
dann scheinen alle Anfragen an https://host.de/socket.io/xyz immer direkt an
http://localeiporhost:5020 zu gehen. Ich weiß aber nicht ob das so richtig ist.
Wäre nett, wenn mir das jemand kurz bestätigen oder erläutern könnte.

Danke und Grüße
LinuTuris