Page 1 of 1

Problem mit NodeRed/Portweiterleitung und Websockets

Posted: Sat 22. Feb 2025, 11:03
by reichs
Hallo,
ich habe auf meiner Server Node-Red laufen, um bestimmte Daten von MQTT in eine Datenbank zu speichern. Dazu habe ich eine subdomain nodered.meinedomain.de eingerichtet und eine Portweiterleitung über die Apache-Einstellungen eingerichtet. Der Zugriff auf Node-Red erfolgt über Port 1880.
Wenn ich nun über https://nodered.meinedomain.de auf Node-Red zugreife, habe ich irgendwelche Probleme mit Websockets, sodass ich NodeRed zwar prinzipiell nutzen kann, aber immer eine Meldung kommt, dass der kontakt zum Server verloren wurde und ich z.B. kein Debugging nutzen kann. Hier scheint das Problem zu sein, dass Websockets nicht funktionieren.

Wenn ich direkt über meine IP und den port zugreife: "xxx.xxx.xxx.xxx:1880" und den Port in der Firewall freigebe, dann funktioniert es ohne Probleme.

In den Apache-Einstellungen habe ich folgendes eingestellt:

Code: Select all

<IfModule mod_proxy.c>
        ProxyPass /.well-known/acme-challenge !
</IfModule>

Alias /.well-known/acme-challenge /home/keyhelp/www/.well-known/acme-challenge

ProxyPreserveHost On
ProxyPass / http://127.0.0.1:1880/
ProxyPassReverse / http://127.0.0.1:1880/
Wo kann denn hier der Fehler liegen? Würde mich über Anregungen freuen - ich finde leider aktuell keine Möglichkeit, nehme aber an, dass es irgendwo an der Portweiterleitung liegt.

VG Stefan

Re: Problem mit NodeRed/Portweiterleitung und Websockets

Posted: Mon 24. Feb 2025, 10:19
by Florian
Hallo,

ja vielleicht fehlen ja einfach noch ein paar Anweisungen für Websockets.


Das sollte man aber in der Doku der Software finden können.

Hier wäre ein Beispiel:

https://gist.github.com/gmag11/765af368 ... 2614a7b24f

Re: Problem mit NodeRed/Portweiterleitung und Websockets

Posted: Tue 25. Feb 2025, 23:26
by reichs
Hallo,
danke für den Tipp. Folgende Apache-Einstellungen haben bei mir letztenendes geholfen:

Code: Select all

<IfModule mod_proxy.c>
    ProxyPass /.well-known/acme-challenge !
</IfModule>

Alias /.well-known/acme-challenge /home/keyhelp/www/.well-known/acme-challenge

ProxyPreserveHost On

# HTTP/HTTPS-Anfragen an Node-RED weiterleiten
ProxyPass / http://127.0.0.1:1880/
ProxyPassReverse / http://127.0.0.1:1880/

# WebSocket-Header nur für WebSockets setzen
<IfModule mod_headers.c>
<Location /comms>
                                RewriteEngine on
                                RewriteCond %{HTTP:Upgrade} ^WebSocket$ [NC]
                                RewriteCond %{HTTP:Connection} Upgrade$ [NC]
                                RewriteRule .*/(.*) "ws://localhost:1880/$1" [P,L]
</Location>
</IfModule>